我有一個應用程序在啓動時使用廣播接收器啓動,同時我也有一個活動和一個進程,因爲服務必須始終在後臺運行我正在啓動它自己的進程上的服務使用android:process清單標籤。在單獨的線程上運行的android服務
ui僅適用於表示需求,我希望用戶能夠運行該服務,即使該活動未處於活動狀態。
我用這額外的參數啓動服務:
intent.putExtra(Intent.EXTRA_DONT_KILL_APP, true);
的問題是,當我按下後退按鈕或home鍵的活動對破壞方法被調用和服務儘管看起來它的運行(它出現在任務管理器上)其行爲不如預期,它應該連接到網絡併發送一些數據,但每X時間使用一個計時器任務,但任務不會觸發,因此數據永遠不會發送。
感謝您的建議,但是1我使用的是大約3 MB的ram,它與在手機上運行的其他任何服務都沒有太大的區別,2它用於什麼(額外的參數)? 3爲什麼不使用單獨的過程?我應該什麼時候? 4我知道警報管理員,但我希望我的更新在警報管理員無法保證的特定時段進行。 – maxsap 2010-11-07 01:03:56
@maxasp:1. Android不會在意。用戶不會在意。 2. http://developer.android.com/reference/android/content/Intent.html#EXTRA_DONT_KILL_APP 3.因爲你浪費了兩倍的RAM,沒有任何好處。 「AlarmManager」工作得很好,謝謝。如果您有相反的證據,請發佈。 – CommonsWare 2010-11-07 01:07:57
實際的應用程序是活動僅在程序第一次運行的服務,所以爲什麼要使用雙RAM?請解釋一下,android會收回活動進程使用的內存(如果我錯了,請糾正我)。我已經閱讀過那篇文章,那就是爲什麼當我說「覆蓋重新啓動應用程序的默認操作」的時候使用它並不會導致這些服務?不知道setRepeating方法抱歉,但我可以動態更改間隔嗎?在當前形式中,服務獲得關於新時間間隔的通知並設置計時器任務。 – maxsap 2010-11-07 01:40:47