首页 > 解决方案 > Android 服务不会在 Android 8.1 上重新启动

问题描述

我有一个扩展服务类的类。我从我的 MainActivity 启动我的服务,但在关闭 android 8.1 上的应用程序时服务不会重新启动

在我的服务类中,我有以下代码:

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {

//some code

    return Service.START_STICKY;
}

我像这样开始我的服务:

  MyService myService = new myService();

    final Intent seriviceIntent = new Intent(this, myService.getClass());

    if (!isMyServiceRunning(myService.getClass())) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                this.startService(seriviceIntent);
            }
        }).start();

    }
    else {

        Log.e("service_log", "service is already running");
    }

我的清单文件中也有这个条目

<service android:name=".service.MyService"/>

在 android 7 上可以正常工作,但在 android 8.1 上不行

我已经尝试在没有线程或通过 ui 线程的情况下启动此服务,但两者都没有工作

标签: javaandroidandroid-service

解决方案


从 Oreo 开始,对服务有一些限制,因此您可能需要查看本指南以将您的服务迁移到 Oreo:

https://developer.android.com/about/versions/oreo/background

或者

看看这个博客:

https://android.jlelse.eu/keep-those-background-services-working-when-targeting-android-oreo-sdk-26-cbf6cc2bdb7f


推荐阅读