我正在嘗試保持活動狀態以響應屏幕開/關更改。該服務將會完美工作一段時間,但最終會被殺死。我現在試圖使用startForeground()來保持這個進程的活躍,但它似乎仍然在死亡。我明白沒有辦法讓流程永遠活着,沒有錯誤,但是我覺得我必須做錯了什麼,因爲添加startForeground()並沒有爲流程添加額外的生命。此外,作爲一個便箋,Logcat抱怨泄漏,因爲未調用unregisterReceiver()(除了手動按下用戶按鈕)..但是,由於我試圖完成的性質,接收器需要直到明確告訴停止。將startForeground()與意圖服務結合使用
有什麼建議嗎?
相關代碼:
public class UpdateService extends IntentService {
public UpdateService() {
super(null);
}
@Override
protected void onHandleIntent(Intent intent) {
final int myID = 1234;
Intent notificationintent = new Intent(this, Main.class);
notificationintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendIntent = PendingIntent.getActivity(this, 0, notificationintent, 0);
Notification notice = new Notification(R.drawable.icon_image, "***********", System.currentTimeMillis());
notice.setLatestEventInfo(this, "*************", "***********", pendIntent);
notice.flags |= Notification.FLAG_NO_CLEAR;
startForeground(myID, notice);
boolean screenOn = intent.getBooleanExtra("screen_state", false);
// Blah Blah Blah......
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
我有類似的問題,在我的情況,我有以保持閃光燈,但它在幾秒鐘內停止,只有可行的選項,我發現是使用意圖服務內的另一個服務,並運行該服務作爲前臺服務,這解決了問題。讓我知道如果你想讓我在此發佈更多詳細信息 – user2548816