我正在将我的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吗?
答案 0 :(得分:1)
在Android Oreo +中,后台服务受到严格限制。要运行代码,您有两种选择:使用Foreground service或使用JobJoeduler / WorkManager API之类的东西。
尽管它们都不可以无限期地工作,并且WorkManager仅用于可延期的任务。这是我们不能做的。
答案 1 :(得分:0)
对于android最新版本,我们对runnig后台服务有一些限制 Android Oreo Limitations