无限期运行服务

时间:2018-12-22 10:22:52

标签: java android android-service android-8.0-oreo android-jobscheduler

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

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

到目前为止,我的应用一直以Android Marshmallow为目标,并且该服务运行正常,并且运行正常。

这是我的服务

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;
    }


}

这就是我从活动启动服务的方式

startService(new Intent(getBaseContext(), MyService.class));

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

但是,如果我的应用程序以Android棉花糖为目标,那么使用完全相同的代码,一切都可以正常工作。

任何人都可以帮助我在针对Android Oreo的Android应用中无限期地运行Serice吗?

2 个答案:

答案 0 :(得分:1)

在Android Oreo +中,后台服务受到严格限制。要运行代码,您有两种选择:使用Foreground service或使用JobJoeduler / WorkManager API之类的东西。

尽管它们都不可以无限期地工作,并且WorkManager仅用于可延期的任务。这是我们不能做的。

答案 1 :(得分:0)

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