我使用這個例子停止問題:苦苦尋找與原因的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線程。
任何幫助表示讚賞...甚至在處理的說明..