我使用这个例子停止问题:苦苦寻找与原因的AsyncTask没有被处理程序
Android - Setting a Timeout for an AsyncTask?
通过以下方式:
al.setOnClickListener(new OnClickListener(){
public void onClick(View w)
{
final AlogLoader loader = new AlogLoader();
loader.execute();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
public void run()
{
if(loader.getStatus() == AsyncTask.Status.RUNNING)
{
loader.cancel(true);
}
}
}, 1);
}
});
我将它设置为“1”因为我想看看我是否可以在开始之前实际阻止它 - 看看我的处理程序是否正在工作 - 实际上我可能会将其设置为15000(15秒)。
但是发生的事情是令人困惑:
运行应用程序,使我onPreExecute()来绘制一个加载屏幕,这并不永远退出,因此用户只看到一个载入画面永远。
在调试器中使用loader.cancel中的断点运行它(true) - >导致调试器停在该行,这是预期的,因为它只允许运行1毫秒。但是,当我在调试器中点击恢复按钮后 - 我的onPostExecute()被调用... 这怎么可能?
很显然,我很新的超时asynctasks - 经过一番研究,我发现上面的例子中,它似乎最有意义给我,肯定更然后 loader.get(15000,TimeUnit.MILLISECONDS ),因为那阻止了UI线程。
任何帮助表示赞赏...甚至在处理的说明..