[英]How to Keep AsyncTask when user closes app
這是我的主要活動:
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
moveTaskToBack(true);
System.exit(0);
}
我希望AsyncTask
在用戶關閉應用程序后繼續在后台將數據放入服務器中。
我希望AsyncTask在用戶關閉應用程序后繼續在后台將數據放入服務器中。
AsyncTask
的目的不是執行超出Activity
生命周期范圍的后台任務。 從線程池中分配后台線程后,它希望在任務結束后將其返回。 即,您不能使用所需時間不確定的AsyncTask
。
您正在尋找的是Android 服務 。
如果我們有服務,為什么還要使用AsyncTask?
好吧,舉例來說,您需要單擊一個Button
從Activity
下載圖像/歌曲,或者您需要執行需要花費一些時間才能完成其執行的任務。 從Main線程(又名UI線程)執行這些任務是一種不好的方法,會使您的應用程序運行緩慢,並最終導致ANR 。 因此,這些任務要從單獨的線程異步處理,以保持應用程序平穩運行。
服務是解決方案的一部分,但請注意,服務在前台線程上運行。 您可能想從服務運行AsyncTask,以確保其繼續在后台線程上運行。
就個人而言,我會建議不要贊成的使用服務的jobscheduler或者如果你需要支持低於API 21設備,Evernote的的JobManager (這也有點更容易使用)。 這些將幫助您安排在適當的時間進行后台操作,以最大程度地減少電池消耗或設備空閑時的消耗。 使用設備資源時,成為好公民很重要。
您必須檢查服務或/和IntentServices
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.