您好,我正在使用警报管理器运行后台服务,它工作正常,但对于某些mi设备,后台服务不工作。我使用了服务,但它不工作,如何在mi中运行我的后台服务?
发布于 2018-09-13 23:44:17
MI UI有它自己的安全选项,所以你需要做的不仅仅是上面提到的sticky Service,你还需要
Intent("ac.in.ActivityRecognition.RestartSensor");onTaskRemoved(Intent rootIntent) { super.onTaskRemoved(rootIntent);Log.e(TAG,“在接收自定义广播接收器中”);Intent broadcastIntent =Intent(“ac.in.ActivityRecognition.RestartSensor”);broadcastIntent(BroadcastIntent);
}
发布于 2019-12-30 14:41:50
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$HighPowerApplicationsActivity"));
startActivity(intent);
试试这段代码
发布于 2017-04-25 18:40:03
当您通过扩展服务类来启动服务时,您将在OnStartCommand()内部获得调用,此方法有三种类型的返回类型,在此返回类型的基础上,操作系统本身管理何时启动服务。因此,假设当你从onStartCommand()返回一个正确的类型时,你的服务由于内存不足或任何其他问题而终止,那么操作系统将负责何时再次启动服务。
三种返回类型为:
START_STICKY :当这是返回类型时,当os保证再次重新启动服务时,如果它被杀死,它肯定会再次启动你的服务,即使没有挂起的意图,它也会通过传递intent作为null来启动服务。
START_NOT_STICKY:表示从onStartCreated()返回后,如果进程终止,并且没有剩余的启动命令可供交付,则服务将停止,而不是重新启动。对于那些只打算在执行发送给它们的命令时运行的服务来说,这更有意义。例如,服务可以从警报开始每15分钟启动一次,以轮询某些网络状态。如果它在执行该工作时被杀死,最好是让它停止,并在下一次警报触发时启动。
START_REDELIVER_INTENT类似于START_NOT_STICKY,除非服务的进程在为给定的意图调用stopSelf()之前被终止,那么该意图将被重新传递给它,直到它完成(除非在多次尝试之后它仍然无法完成,此时系统放弃了)。这对于正在接收要做的工作的命令的服务很有用,并且希望确保它们最终完成所发送的每个命令的工作。
https://stackoverflow.com/questions/43607869
复制相似问题