web_dev
@web_dev

Всегда работающий сервис без activity?

Здравствуйте, перепробовал несколько вариантов, но ни один из них не работает.
Кто-то знает как сделать такой сервис или хотя бы, чтоб он сам себя пересоздавал когда убивается активити из списка?
Сервис работает, но как только как я убираю активити из стека, перестает работать. Желательно начиная с андроид 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>


Или все-таки это невозможно? Многие пишут, что так и есть.
Спасибо за подсказки.
  • Вопрос задан
  • 785 просмотров
Решения вопроса 1
@onepavel
Консультация и разработка мобильных приложений
все возможно
на хабре есть 2 статьи, как сделать живучие сервисы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы