您好我正在使用alaram管理器运行后台服务工作正常但是对于某些mi设备后台服务无法正常工作。我使用了服务但是它无法运行如何在mi中运行我的后台服务?
答案 0 :(得分:1)
MI UI具有自己的安全性选项,因此您需要的不仅仅是上述粘性服务, 您需要
如果第三个选项不起作用销毁该服务,请致电自定义广播接收者 w
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
Log.e(TAG, " In recieve Custome Broadcast receiver");
Intent broadcastIntent = new Intent("ac.in.ActivityRecognition.RestartSensor");
sendBroadcast(broadcastIntent);
}
答案 1 :(得分:0)
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$HighPowerApplicationsActivity"));
startActivity(intent);
尝试此代码
答案 2 :(得分:-1)
我解决了redmi 3s prime,对于这个设备我手动提供自动启动权限,你可以在这里查看" https://xiaomininja.com/2015/08/10/miui-tip-enable-autostart-to-never-miss-a-notification-again/"并解决了。因为当应用未启动时,mi kill服务。
答案 3 :(得分:-1)
当您通过扩展Service类来启动服务时,您将获得OnStartCommand()内部的调用,此方法在此返回类型的基础上有三种类型的返回类型操作系统本身管理何时启动服务。 因此,假设当你从onStartCommand()返回正确的类型时,由于内存不足或任何其他问题,你的服务被中断,那么os将负责何时再次启动服务。
三种返回类型是:
START_STICKY:当这是返回类型时,如果它被取消,它将保证再次重新启动服务,它肯定会再次开始服务,即使没有未决意图它将通过将intent传递为null来启动服务。
START_NOT_STICKY:说从onStartCreated()返回后,如果进程被终止而没有剩余的启动命令要传递,那么该服务将被停止而不是重新启动。这对于仅在执行发送给它们的命令时运行的服务更有意义。例如,可以从警报每15分钟启动一次服务以轮询一些网络状态。如果它在执行该工作时被杀死,最好让它停止并在下次警报触发时开始。
START_REDELIVER_INTENT类似于START_NOT_STICKY,除非服务的进程在为给定的意图调用stopSelf()之前被终止,该意图将被重新传递给它直到它完成(除非经过多次尝试后仍然可以'完成,系统放弃了这一点。这对于接收要执行的工作命令的服务很有用,并且希望确保它们最终完成所发送的每个命令的工作。