星期二, 3月 28, 2017

[ Android ] 使用Service (三) 重啟Service



如果機器在memory不夠的情況下,
就會把一些service砍掉,
那要如何讓service重啟呢?

這方法只能用在startService()時,
因為他會呼叫到onStartCommand()這個function。

 public int onStartCommand(Intent intent, int flags, int startId) {
        handleStart(intent, startId);
        return START_NOT_STICKY;
 }

而我們只要在回傳值加入回傳的值就可以達到這效果。

START_STICKY
這個是告訴系統說如果你memory不足砍掉我,
那請在memory夠時create完service後,呼叫onStartCommand()重新帶起我,
並且使用"null" intent。


START_NOT_STICKY
這個是告訴系統說不用再重新帶起我了。


START_REDELIVER_INTENT
這是告訴系統,
重新create完service後,並且傳入相同的intent到onStartCommand(),
來帶起我。

Ref 1
Ref 2

沒有留言: