3

因此,從我所知道的情況來看,如果我在Activity內部執行AsyncTask,那麼當用戶在完成之前退出Activity時,可能會終止該任務。我看到的一個解決方案是使用IntentService,系統將盡力不殺死。多個工作線程與IntentService具有相同的優先級?

我的問題是,IntentService只使用一個後臺線程來逐個運行所有的任務。我有幾個獨立的任務,我希望同時運行,並在用戶界面(不嚴重,但可能會讓用戶感到驚訝)有所不同。

我該如何做到這一點?我想我可以有幾個IntentService,但這看起來很尷尬,不可擴展。我該如何維護一個優先級很高的線程池,以便它不會被系統輕易殺死?

如果我啓動一個(正常)Service,那麼在那裏啓動一些AsyncTask s,這是否會導致更高的優先級?

非常感謝。

回答

1

我確定它不是你想要我告訴你的,但是,你可能需要重新考慮你的設計,以免在後臺運行這麼多事情。這當然都取決於你想要完成的是什麼,所以請詳細說明你是否會在後臺完成你正在做的事情。

對於問題的後半部分。啓動一項服務並從那裏啓動AsyncTask將不會導致更高的優先級。這是因爲必須在UI線程上啓動AsyncTask(如果從活動或服務級別啓動,則同樣如此)

如果您正在運行多個網絡線程,請停止其非常糟糕的做法並浪費大量電池電量。你最好一次運行一個。