Android中非同步任務(AsyncTask)
Android的UI執行緒主要負責處理使用者的按鍵事件、使用者觸屏事件和螢幕繪圖等事件,因此開發時的其他各類操作不能阻塞UI執行緒,否則UI介面就會停止響應,給使用者帶來糟糕的體驗
為了避免UI執行緒失去響應的問題,Android建議將耗時的操作放在新的執行緒中去完成,但是新執行緒也可以需要動態更新UI元件,例如:獲取網路資料後,新執行緒不允許直接更新UI元件
為了解決新執行緒不能更新UI元件的問題,Android提供了幾種解決方案
-
使用Hanlder
-
Acitity.renOnuiThread(Runnable)
-
View.post(Runnable)
-
View.postDelayed(Runnable,long)
-
......
Hanlder的操作其實還算OK,主要是後面幾種方法可能導致程式設計略顯枯燥,這個時候使用AsyncTask可以簡化這種操作
AsyncTask<Parans,Progress,Result>是一個抽象類,通常用於被繼承,而被繼承則需腰指定這三個泛型引數
-
Parans:啟動任務執行的輸入引數的型別
-
Progress:後臺任務完成的進度值的型別
-
Result:後臺執行任務完成後返回結果的型別
使用非同步操作其實只需要三步
-
建立 AsyncTask的子類,並且為三個泛型引數指定型別
-
實現 AsyncTask的方法
-
呼叫 AsyncTask的子類的execute開始執行耗時任務
使用execute時必須遵守的規則
-
必須在UI執行緒中建立 AsyncTask的例項
-
必須在UI執行緒中建立 AsyncTask 的例項的execute方法
-
AsyncTask的各個方法應該由Android系統呼叫而不是程式設計師
-
每個 AsyncTask只能被執行一次,多次會引發異常
而 AsyncTask的方法有如下幾種
-
doInBackground(Params...)
-
onProgressUpdate(Progress...values)
-
onPreExecute()
-
onPoxtExecute()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2687656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android的AsyncTask非同步任務淺析Android非同步
- AsyncTask非同步任務類非同步
- Android後臺任務(HandlerThread、AsyncTask、IntentService)AndroidthreadIntent
- AsyncTask實現非同步任務執行非同步
- 深入理解安卓非同步任務AsyncTask安卓非同步
- .Net中非同步任務的取消和監控非同步
- Android 非同步載入——AsyncTask詳談Android非同步
- Python中非同步模式Python非同步模式
- 同步任務與非同步任務執行順序非同步
- Android AsyncTask 詳解Android
- js中非同步處理JS非同步
- Node中非同步和同步的實現非同步
- SpringBoot與非同步任務、定時任務、郵件任務Spring Boot非同步
- servlet非同步任務Servlet非同步
- js的setTimeout和Promise—同步非同步和微任務巨集任務JSPromise非同步
- Android非同步、延遲和定時任務的簡易用法Android非同步
- 終止非同步任務非同步
- Celery非同步任務框架非同步框架
- Android和iOS開發中的非同步處理(二)——非同步任務的回撥AndroidiOS非同步
- django + redis + celery 非同步任務DjangoRedis非同步
- 非同步任務取消、超時非同步
- 非同步任務編排CompletableFuture非同步
- Android和iOS開發中的非同步處理(三)——多個非同步任務協作AndroidiOS非同步
- JavaScript有同步任務和非同步任務,瀏覽器是怎麼處理的?JavaScript非同步瀏覽器
- python中非同步非阻塞如何實現Python非同步
- Android WorkManager 定時任務Android
- 前端急速解決非同步之微任務和巨集任務前端非同步
- Django配置celery執行非同步任務和定時任務Django非同步
- Django 如何使用 Celery 完成非同步任務或定時任務Django非同步
- 關於非同步方法中的巨集任務與微任務非同步
- Android 多執行緒-----AsyncTask詳解Android執行緒
- Android入門教程 | AsyncTask 使用介紹Android
- 用CompletableFuture實現非同步任務非同步
- 理解JavaScript概念系列--非同步任務JavaScript非同步
- Spring @Async開啟非同步任務Spring非同步
- Java8 CompletableFuture非同步任務Java非同步
- 掌握C#中非同步魔法:同步方法如何優雅呼叫非同步方法C#非同步
- Android 封裝AsyncTask操作Sqlite資料庫Android封裝SQLite資料庫