我希望每次电池电量达到50%时调用一种方法,即使关闭应用程序或关闭屏幕也是如此。 我尝试了Service和BroadcastReceiver但是当我从最近的应用程序列表中删除应用程序时,服务已停止,我不再接受此方法的调用。 如何在背景中保存?
答案 0 :(得分:0)
显然,KitKat( EDIT:和Jelly Bean?)引入了一个错误,当一个应用程序从最近的应用列表中滑落时,它会阻止粘性服务重新启动。见https://groups.google.com/forum/#!topic/android-developers/H-DSQ4-tiac
用户Musikant在上述链接中提供的此解决方法应解决运行KitKat的设备的问题。在Service
课程中实施以下内容:
public void onTaskRemoved(Intent rootIntent) {
Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmService.setExact(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 1000,
restartServicePendingIntent);
super.onTaskRemoved(rootIntent);
}
有关其他可能的解决方案,请参阅START_STICKY does not work on Android KitKat。
答案 1 :(得分:0)
我得到的最佳解决方案: -
尽管Stack上的所有建议答案都针对同一个问题溢出,但如果不以任何方式帮助您阅读: 这种情况恰好发生在一些设备中,如果仅在该特定设备上发生这种情况,请参阅“设置”下是否授予了应用的自动启动权限。 因为
brodcast仍然会在未经许可的情况下发送到我们的应用程序 授予自动启动应用程序不会来到前台