Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何运行后台服务,即使应用程序在MI设备中被终止_Java_Android - Fatal编程技术网

Java 如何运行后台服务,即使应用程序在MI设备中被终止

Java 如何运行后台服务,即使应用程序在MI设备中被终止,java,android,Java,Android,您好,我正在使用alaram manager运行后台服务。它工作正常,但对于某些mi设备,后台服务不工作。我使用了服务,但它不工作。如何在mi中运行我的后台服务?当您通过扩展服务类启动服务时,您将在OnStartCommand()中得到调用此方法有三种类型的返回类型基于此返回类型操作系统本身管理何时启动服务。 所以,假设在从onStartCommand()返回正确的类型时,由于内存不足或任何其他问题,您的服务在此期间被终止,那么操作系统将负责何时再次启动服务 有三种退货类型: START_STI

您好,我正在使用alaram manager运行后台服务。它工作正常,但对于某些mi设备,后台服务不工作。我使用了服务,但它不工作。如何在mi中运行我的后台服务?

当您通过扩展服务类启动服务时,您将在OnStartCommand()中得到调用此方法有三种类型的返回类型基于此返回类型操作系统本身管理何时启动服务。 所以,假设在从onStartCommand()返回正确的类型时,由于内存不足或任何其他问题,您的服务在此期间被终止,那么操作系统将负责何时再次启动服务

有三种退货类型:

START_STICKY:当这是返回类型时,操作系统将保证重新启动服务,如果服务被终止,它肯定会再次启动服务,即使没有挂起的意图,它也会通过将意图传递为null来启动服务

START_NOT_STICKY:表示从onStartCreated()返回后,如果进程被终止,并且没有剩余的START命令要传递,那么服务将停止而不是重新启动。这对于那些只打算在执行发送给它们的命令时运行的服务来说更有意义。例如,服务可能从报警开始每隔15分钟启动一次,以轮询某些网络状态。如果它在工作时被杀死,最好让它停下来,下次警报响起时再启动


START\u REDELIVER\u INTENT类似于START\u NOT\u STICKY,除非服务的进程在调用给定INTENT的stopSelf()之前被终止,该INTENT将被重新传递给它,直到它完成为止(除非在多次尝试后仍然无法完成,此时系统放弃)。这对于接收要执行的工作命令并希望确保最终完成每个发送命令的工作的服务非常有用。

MI UI有自己的安全选项,因此您需要的不仅仅是上述粘性服务, 你需要

  • 启用自动启动
  • 转到电源设置,根据这些youtube视频进行更改 ,或参考此以获取更多建议
  • 然后,您已经创建了一个自定义广播接收器,当您的服务被破坏时,该接收器将启动该服务 根据这个例子
  • 如果第三个选项在恢复服务时不起作用,请呼叫上的自定义广播接收器 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);
    
    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$HighPowerApplicationsActivity"));
                    startActivity(intent);