How to restart a Service after getting Killed by apps like “Advanced Task Killer”?

后端 未结 3 1955
刺人心
刺人心 2020-12-09 19:28

I have a public class that \'extends Service\' and this service is launched from an activity using startService(...). But after I use Advanced Task Killer, the service is ki

3条回答
  •  无人及你
    2020-12-09 20:20

    Android system, or the user, may terminate a service at any time. For this reason if you want to ensure something is always running, you can schedule a periodic restart by means of AlarmManager class. The following code demonstrates how to do this.

    Calendar cal = Calendar.getInstance();
    
    Intent intent = new Intent(this, MyService.class);
    PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
    
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    // Start every minute
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 60*1000, pintent); 
    

    You can run this code when the user starts the app (i.e. in the oncreate of the first activity) but you have to check if it is already done, so probably it will be better if you create a broadcast receiver, than launches this code on system reboot.

提交回复
热议问题