Замораживается сервис без Toast'a

На андройде 4.4.2 замораживается сервис, если не выводить Toast по таймеру каждые 2 секунды. Честно говоря, вообще не пойму в чем дело.

Код сервиса:

public class MySerivce extends Service {

    public MySerivce () {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onDestroy() {

        Intent broadcastIntent = new Intent();
        broadcastIntent.setAction("restartservice");
        broadcastIntent.setClass(this, BroadcastRestarter.class);
        this.sendBroadcast(broadcastIntent);

        new Handler(Looper.getMainLooper()).post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(FiredataReader.this, "Service destroyed", Toast.LENGTH_SHORT).show(); 
            }
        });

        super.onDestroy();
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        notificator = new Notificator(FiredataReader.this, 4443, false,  false);

        Timer timer = new Timer();

        timer.schedule(new TimerTask() // вот это чудо
        {
            @Override
            public void run()
            {
                new Handler(Looper.getMainLooper()).post(new Runnable() {

                    @Override
                    public void run() {
                        Toast.makeText(FiredataReader.this, TimeManager.getCurrentDateTime(), Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }, 0, 2000);


        return START_REDELIVER_INTENT;
    }
}

Суть в том, что даже если вместо Toast'a тупо принтить в Log - сервис висит в запущенных приложениях, но при этом ни на что не реагирует (ест 0 байт оперативки, как пишет android).

Что это такое и что с этим делать?


Ответы (1 шт):

Автор решения: user300058

Решил проблему путем добавления рестарта сервиса в onTaskRemoved. (P.S. Такая проблема только на 4.4.2, видимо, ибо на 5+ все работает нормально и без этого)

@Override
public void onTaskRemoved(Intent rootIntent) {
    Intent restartService = new Intent(getApplicationContext(),
            this.getClass());
    restartService.setPackage(getPackageName());
    PendingIntent restartServicePI = PendingIntent.getService(
            getApplicationContext(), 1, restartService,
            PendingIntent.FLAG_ONE_SHOT);
    AlarmManager alarmService = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() +1000, restartServicePI);

}
→ Ссылка