我的服務通常是由項值一個BroadcastReceiver啓動,並與START_STICKY標誌實現如下:製作服務生命週期獨立於活動
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
因此在很多情況下,當用戶啓動應用程序時,服務將已在後臺運行。然後,我的活動將綁定到它以從服務中讀取信息。
但是,當用戶隨後使活動失效(通過終止應用程序),我已經運行的服務現在也被銷燬,然後通過start_sticky重新啓動。這會導致我在服務中保留的一些信息丟失。
有沒有辦法保存我的服務實例,並讓我的活動進出去,根據需要進行綁定?
你或許可以用'#服務來onDestroy'實施清理和保存,否則你就失去了信息。請參閱:http://developer.android.com/reference/android/app/Service.html#onDestroy() – blad 2014-12-06 23:03:06
「然後使活動(通過終止應用程序)失效」..用戶不能也不銷燬活動,也不終止應用程序。他/她所能做的就是完成活動。 Android將在未來的某個時間點調用onPause(),可能是onStop()或者Activity.onDestroy()。但是如果你的服務正在運行,應用程序不會被終止。 – rupps 2014-12-06 23:12:09
@rupps:「用戶不能也不銷燬活動」 - 按BACK,默認情況下銷燬活動。 「也不終止應用程序」 - 我的解釋是,OP意味着「終止進程」,例如通過最近的任務列表。 – CommonsWare 2014-12-06 23:13:09