我有一個Android應用程序,它使用服務在應用程序打開時不斷更新視圖中的文本視圖。它使用它發送意圖的廣播接收器更新它。根據應用程序的性質,即使在應用程序退出/視圖消失後,服務仍需要繼續運行。顯然,在這種情況下在主線程上運行服務並不明智,因爲這樣做會太多並最終導致應用程序關閉並崩潰。那麼保持此服務運行的最佳方式是什麼?一個ASyncTask?一個單獨的線程?我會如何去做這件事?我有一個像這樣的的AsyncTask試了一下:從ASyncTask或線程運行服務?
private class MyTask extends AsyncTask {
@Override
protected Object doInBackground(Object... objects) {
return getActivity().getApplicationContext().startService(intent);
}
@Override
protected void onCancelled() {
getActivity().getApplicationContext().stopService(intent);
super.onCancelled();
}
}
噢,我使用getActivity()getApplicationContext(),因爲這是一個片段內。
所以這工作正常;當我想要停止它時,我打電話給MyTask.execute(),MyTask.cancel(真),但是我很確定我沒有使用它,它應該如何使用。我甚至不知道我應該用什麼作爲execute方法的參數(??)。在其中開始一項服務似乎並不是最好的主意,沒有別的,當然,只用一個線程就可以更好地工作?爲了使它按照預期的方式工作,有什麼正確的方法可以解決這個問題?順便說一下,雖然這個功能比在主線程上運行時間長得多,但它在幾個小時後仍會崩潰。
服務將始終運行在異步線程中。那麼上面的代碼說什麼? –