Android AsynTask 如何取消?

來源:互聯網
上載者:User

一個很重要的事情,以前使用AsynTask從來沒有主動調用過取消,現在遇到了一個問題,就想著如何取消呢?

下面都是網上看到的一些理解,不過最好還是自己親自實驗後再決定如何做。

最後我決定在Fragment的onDesdroy() 方法中,這樣處理:

   

 @Override    public void onDestroy() {        super.onDestroy();        if (mGetFileLength != null && !mGetFileLength.isCancelled()) {            mGetFileLength.cancel(true);        }     }

----------------------------------------------------------------------------------------------------

AsyncTask無法用Cancel函數關掉.
如果AsyncTask正執行Sleep時,調用cancel方法,會產生異常InterruptedException.
如果希望能中途關掉AsyncTask,最好設定一個標誌位,然後在doinbackground()裡去查詢這個標誌.

一個AsyncTask對象只能執行一次,想執行第二次,必需重新建立.

-------------------------------------------------------------------------------------------------------

在java的線程中,沒有辦法停止一個正在運行中的線程。在Android的AsyncTask中也是一樣的。如果必須要停止一個線程,可以採用這個線程中設定一個標誌位,然後線上程run方法或AsyncTask的doInBackground方法中的關鍵步驟判斷這個標誌位以決定是否繼續執行。然後在需要終止此線程的地方改變這個標誌位以達到停止線程的目的。

 

   從外部調用AsyncTask的cancel方法並不能停止一個已經啟動的AsyncTask。這個cancel方法的作用與線程的interrupt方法相似,調用了一個線程的interrupt方法之後線程仍然運行,但是如果該線程的run方法裡面調用過sleep的或者wait方法後,處於sleep或wait狀態,則sleep和wait立即結束並且拋出InterruptedException異常。AsyncTask的cancel方法也一樣,如果在這個Task的doInBackground方法中調用了sleep或wait方法,當在UI線程中調用了這個Task執行個體的cancel方法之後,sleep或wait立即結束並且拋出InterruptedException異常,但是如果捕獲該異常的代碼後面還有其他代碼,則這些代碼還會繼續執行。

------------------------------------------------------------------------------------------------------------

http://hi.baidu.com/justtmiss/item/e67ebf5a964ed4cad2e10cf0

http://www.cnblogs.com/tt-0411/archive/2012/03/25/2410830.html

http://blog.csdn.net/cynhafa/article/details/6860201

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.