簡體   English   中英

用戶關閉應用程序時如何保持AsyncTask

[英]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?

好吧,舉例來說,您需要單擊一個ButtonActivity下載圖像/歌曲,或者您需要執行需要花費一些時間才能完成其執行的任務。 從Main線程(又名UI線程)執行這些任務是一種不好的方法,會使您的應用程序運行緩慢,並最終導致ANR 因此,這些任務要從單獨的線程異步處理,以保持應用程序平穩運行。

服務是解決方案的一部分,但請注意,服務在前台線程上運行。 您可能想從服務運行AsyncTask,以確保其繼續在后台線程上運行。

就個人而言,我會建議不要贊成的使用服務的jobscheduler或者如果你需要支持低於API 21設備,Evernote的的JobManager (這也有點更容易使用)。 這些將幫助您安排在適當的時間進行后台操作,以最大程度地減少電池消耗或設備空閑時的消耗。 使用設備資源時,成為好公民很重要。

您必須檢查服務或/和IntentServices

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM