Здравствуйте, перепробовал несколько вариантов, но ни один из них не работает.
Кто-то знает как сделать такой сервис или хотя бы, чтоб он сам себя пересоздавал когда убивается активити из списка?
Сервис работает, но как только как я убираю активити из стека, перестает работать. Желательно начиная с андроид 5(API 21).
Вот что я попробовал.
В сервисе. Не запускает заново.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent restartService = new Intent(this,
this.getClass());
restartService.setPackage(getPackageName());
PendingIntent restartServicePI = PendingIntent.getService(
this, 0, restartService,
0);
AlarmManager alarmService = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmService.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 5 * 1000, restartServicePI);
//Этот вариант тоже не работает
// getApplicationContext().startService(new Intent(getApplicationContext(), BackgroundService.class));
}
В сервисе (BroadcastReceiver ) тоже не работает.
@Override
public void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent("YouWillNeverKillMe"));
}
public class BootBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
Log.i("WTW", "ServeiceDestroy onReceive...");
ctx.startService(new Intent(ctx.getApplicationContext(), BackgroundService.class));
}
}
В манифесте также объявил..
<receiver android:name=".BootBroadcast">
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.BOOT_COMPLETED" />-->
<!--</intent-filter>-->
<intent-filter>
<action android:name="YouWillNeverKillMe" >
</action>
</intent-filter>
</receiver>
Или все-таки это невозможно? Многие пишут, что так и есть.
Спасибо за подсказки.