我的解决粘性服务的解决方案在Android版Lollipop下运行良好,但是当用户从后台杀死应用程序时,Lollipop版本服务正在关闭。
任何建议的家伙。
答案 0 :(得分:2)
使用可以启动服务作为前景,即使操作系统可以杀死它以获取更多信息检查链接Running a service in the foreground
答案 1 :(得分:1)
我得到了关于它的解决方案,而不是为什么它对我有用,但试试这个。
覆盖onTaskRemoved()
@Override
public void onTaskRemoved(Intent rootIntent) {
// TODO Auto-generated method stub
//Write your stuff which you set in onDestroy()
}
并设置你在onDestroy()中设置的相同代码,它对我有效。
答案 2 :(得分:0)
例如,以下代码适用于Lollipop。
@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);
}
但是自从Android N发布以来,事情变得相当棘手。现在android O对后台任务施加了更多限制。因此,在Android O中没有后台服务可以运行服务的东西将在你的应用程序从前台运行后被操作系统杀死(只有前台服务可以运行,即服务上面有通知)。这是一个内容丰富的solution。