【发布时间】:2017-09-12 13:50:24
【问题描述】:
我尝试在后台运行服务。已使用 Start_Sticky。 基本上这个answer。它在许多设备上都可以正常工作,但在小米联想等某些设备中,当应用程序从“最近的应用程序”屏幕中删除时,该服务就会消失。我也尝试过为特定应用程序和整个系统停用节电程序,但这也不起作用。
如何让它在这些设备上工作?我知道这是可能的,因为即使应用程序不在“最近的应用程序”屏幕中,某些应用程序(如 whatsapp)和游戏也能够发送通知。
【问题讨论】:
我尝试在后台运行服务。已使用 Start_Sticky。 基本上这个answer。它在许多设备上都可以正常工作,但在小米联想等某些设备中,当应用程序从“最近的应用程序”屏幕中删除时,该服务就会消失。我也尝试过为特定应用程序和整个系统停用节电程序,但这也不起作用。
如何让它在这些设备上工作?我知道这是可能的,因为即使应用程序不在“最近的应用程序”屏幕中,某些应用程序(如 whatsapp)和游戏也能够发送通知。
【问题讨论】:
您可以在服务类的 onTaskRemoved() 方法中用 1 分钟创建警报。 1分钟后会自动调用并重启服务。
在服务类中
public void onTaskRemoved(Intent rootIntent) {
Intent restartService = new Intent(getApplicationContext(), YourService.class);
restartService.setPackage(Yourpackagename);
PendingIntent restartServiceIntent = 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, restartServiceIntent);
}
【讨论】: