运行 无限期服务

Running a Service indefinitely

我正在将我的 Android 应用迁移到 Android Oreo。我正在 运行 宁服务应该 运行 无限期地执行特定任务。

服务的运行当然是在用户同意的情况下执行特定任务。

到目前为止,我的应用程序一直以 Android Marshmallow 为目标,服务运行良好,运行ning 也很好。

这是我的服务

public class MyService extends Service {

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    private void DoSomething() {
     //Some Code keep watching something.       
    }


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

        DoSomething();

        return  Service.START_STICKY;
    }


}

这就是我从 Activity

启动服务的方式
startService(new Intent(getBaseContext(), MyService.class));

现在我的问题是,当我将我的应用程序定位到 Android Oreo 时,服务不是 运行ning,因此我试图实现的功能无法正常工作。

但是如果我的应用程序目标 Android Marshmallow 使用完全相同的代码一切正常。

任何人都可以帮助我 运行 在 Android 应用定位 Android Oreo 中无限期地提供服务吗?

在AndroidOreo+中,后台服务被严格限制。要 运行 您的代码,您有两种选择:使用 Foreground service or use something like JobScheduler/WorkManager API。

虽然它们都不会无限期地工作,但 WorkManager 仅适用于可延迟的任务。这是我们无能为力的事情。

对于 android 最新版本,我们对运行后台服务有一些限制 Android Oreo Limitations