我試圖在後臺連續運行我的服務。我知道這會耗盡大量電池,但對我來說仍然是一個用例。Android服務:重新啓動一次從電話的任務堆棧中清除或刪除(全部清除)任務
案例1:使用startService(intent)
方法啓動BackgroundService。 案例2:開始使用bindService(intent,serviceConnection, Context.BIND_AUTO_CREATE);
在這兩種情況下,BoundService,我的服務onStartCommand
代碼就像下面,
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
while(count < 10000){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
}
}
}).start();
// TODO: flag not start itself when stopped
// TODO: use START_STICKY to keep running
return START_STICKY;
}
情景時,我的服務不會死意味着它將繼續運行:
情況1:如果我按HOME按鈕。 情況2:如果我按回來並從應用程序中退出。
情景時,我的服務一定會被殺死:
案例1:如果我從手機的任務堆棧我的申請。 情況2:我去設置並停止服務。
我希望我的服務能夠在上述任何情況下都會被殺掉。
我已經提到,從計算器許多問題要做到這樣,
@Override
public void onDestroy() {
super.onDestroy();
startService(new Intent(this, BackgroundService.class));
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
startService(new Intent(this, BackgroundService.class));
}
但可以肯定的onDestroy()
不是那種方法,都會被調用的時間。我在我的日誌中檢查過它。
請接受你自己的答案。這將從未回答的問題列表中刪除問題。謝謝! –
你能解釋清楚嗎?你爲什麼接受我的答案而不是你自己的答案?我很好奇。 –
@DavidWasser,你的回答幫助我從不同的角度思考。我爲中國製造商如小米,華爲等在「自動啓動」中保留了我的應用程序。因此,您應該得到這一點。 – Custadian