1. 程式人生 > >Android AsyncTask cancel()方法的使用

Android AsyncTask cancel()方法的使用

最近做公司專案,由於對AsyncTask瞭解並不充分,被小小坑了一下,這裡Mark一下。

大致是要在AsyncTask執行一個while(true)迴圈,本以為在Activity的onPause()方法中呼叫task.cancel(true)就可以強制結束AsyncTask,但是實際上是不可行的,因為task.cancel(true)方法僅僅是將AsyncTask的cancel識別符號設定為true,仍然需要去手動停止迴圈。具體方法見下:

class MyTask extends AsyncTask<Void, Void, Void> {
    // variables...
    @Override
    protected Void doInBackground(Void ...voids) {
        // initialization ...
        while(true) {
            if(isCancelled())
                break;
            // do my thing ...
        }
        // ending ...
    }
    // other methods ...
}
然後在Activity中可以這樣去結束一個AsyncTask
class MyActivity extends Activity {
    MyTask task = new MyTask();
    // other methods ...
    @Override
    protected void onPause() {
        super.onPause();
        if(task != null)
            task.cancel(true);
            task = null;
        // do other things ...
    }
}
最後,當然也可以自己宣告boolean變數去控制迴圈。

看來官方文件還是要多看看!

相關推薦

Android AsyncTask cancel()方法的使用

最近做公司專案,由於對AsyncTask瞭解並不充分,被小小坑了一下,這裡Mark一下。 大致是要在AsyncTask執行一個while(true)迴圈,本以為在Activity的onPause()方法中呼叫task.cancel(true)就可以強制結束AsyncTask

AsyncTaskcancel方法的誤讀

你是否遇到過使用AsyncTask做下載邏輯時,在下載進行到一半點選返回鍵,然後再次回到下載介面時,執行緒並未立即執行,而是過一段時間之後才開始。為了究其原因,我寫了個Demo進行了下驗證。 Demo很簡單,主要就是展示一個進度條,在doInBackgroun

Android:UI更新方法五:利用AsyncTask更新UI

關於AsyncTask的用法: 3個範型引數: Params啟動任務執行的輸入引數 Progress後臺任務執行的百分比 Result,後臺計算的結果型別 在一個非同步任務裡,不是所有的型別總被用。假如一個型別不被使用,可以簡單地使用Void型別: private c

AsyncTaskcancel方法並沒有停止任務

實際專案中有這麼一個問題,使用者進入詳情介面,那麼我們就要網路載入資料並展現在UI上,這個載入用執行緒或者非同步。 這裡就拿專案中統一用非同步任務來獲取網路資料把。 使用者可能會有這麼一個操作,它在一個商品(說說等)列表中,點選一個列表項,進入到相應的詳情介面,這時候,我們會開啟一個非同步任務來獲取網路資料

Android的一些方法和屬性

註意 odin 技術 drawable button display round clas class 1.Activity常用的方法   View findViewById(int id) //根據組件的ID取得組件對象   setContentView(int

Android ViewPager使用方法小結

nco col tile 情況 谷歌 obj wpa sla 釋放 android-support-v4.jar 是谷歌提供給我們的一個兼容低版本安卓設備的軟件包,裏面包囊了只有在 Android 3.0 以上可用的API。而 ViewPager 就是其中之一。利用它,我們

Android configChanges使用方法

port sca 顯示效果 style pos nbsp 初始化 重復調用 rac 1. 在manifest文件裏使用activity的默認屬性。橫屏豎屏時,惠重復調用onDestory和onCreate 造成不必要的開銷。Android默認如此應該是為了適配不

Android PopupWindow使用方法小結

ring hub tps enter offset [] 註意 外部 現在 前幾天要用到PopupWindow,一時竟想不起來怎麽用,趕緊上網查了查,自己寫了個demo,並在此記錄一下PopupWindow的用法。 使用場景 PopupWindow,顧名思義,就是彈窗,在很

aNDROID兩種方法實現MENU

music win pup andro com 兩種方法 hao123 popu oid pOpUpWINDOW%E6%98%BE%E7%A4%BA%E7%9A%84%E9%97%AE%E9%A2%98 http://music.hao123.com/songlist/4

【設計模式與Android】工廠方法模式——化工女神的工廠

設計模式 android 什麽是工廠方法模式 所謂工廠方法模式,就是定義一個用於創建對象的接口,讓子類決定實例化哪個類的設計模式。工廠模式適用於需要生成復雜對象的地方。 工廠方法模式的實現方式 這次我不打算用文學作品舉例了,以前前幾篇文章用《三國演義》和《水滸傳》舉例,某IT社區的技術編輯居然認為我是

Android抓包方法(轉)

工作 鎖屏 缺點 traffic 連接 www. info 服務 電腦ip Android抓包方法(轉) 作者:Findyou 地址:http://www.cnblogs.com/findyou/p/3491014.html 前言: 做前端測試,基本要求會抓包,會分析

Butterknife--Android Butterknife使用方法總結(轉)

black inner 混淆 ora RoCE max 通過 要點 vat 原文鏈接:http://blog.csdn.net/donkor_/article/details/77879630 前言: ButterKnife是一個專註於Android系統的View註入框架,

Android高手進階教程(二十)之---Android與JavaScript方法相互調用!

工程 orien lns asc eat element 加載 一個 creat 在Android中通過WebView控件,可以實現要加載的頁面與Android方法相互調用,我們要實現WebView中的addJavascriptInterface方法,這樣html才能調用a

調用android的getColor()方法出現 java.lang.NoSuchMethodError: android.content.res.Resources.getColor

sdn targe drawable ava source 添加 andro content 鏈接 1.java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable/getColor或者 jav

Android使用Post方法獲取Json配置

1. 首先是使用Post方法從網路獲取Json的程式碼, 返回型別為String: public String SendPostRequest(String param_key, String param_val){ HttpURLConnection conn=null;

Android Socket 常用方法介紹

try {/***第一種:客戶端Socket通過構造方法連線伺服器***///客戶端Socket可以通過指定IP地址或域名兩種方式來連線伺服器端,實際最終都是通過IP地址來連線伺服器//新建一個Socket,指定其IP地址及埠號Socket socket = new Socket("192.168.

android FragmentPagerAdapter getItem方法沒有執行

在一個 Android 應用中,我使用 FragmentPagerAdapter 來處理多 Fragment 頁面的橫向滑動。不過我碰到了一個問題,即當 Fragment 對應的資料集發生改變時,我希望能夠通過呼叫 mAdapter.notifyDataSetChanged()

Android AsyncTask

相關文章 Android AsyncTask類 Android Handler類 1. AsyncTask類 AsyncTask,非同步任務,用於在後臺執行緒執行一個任務,在UI執行緒上修改介面。AsyncTask<Params, Progress, Result>需

檢測Android模擬器的方法和程式碼實現

專自:https://bbs.pediy.com/thread-225717.htm 剛剛看了一些關於Detect Android Emulator的開源專案/文章/論文, 我看的這些其實都是13年14年提出的方法, 方法裡大多是檢測一些環境屬性, 檢查一些檔案這樣, 但實際上檢測的思路並不侷限

(轉)Android訪問webservice 糾正網上亂傳的android呼叫Webservice方法

糾正網上亂傳的android呼叫Webservice方法。   1.寫作背景:   筆者想實現android呼叫webservice,可是網上全是不管對與錯亂轉載的文章,結果不但不能解決問題,只會讓人心煩,所以筆者決定將自己整理好的能用的android呼叫webserv