Android 在Oreo中使用JobIntentService调度任务
我已经绝望了,两天来我一直在搜索如何安排android O的后台服务,但没有任何效果,每周一次,与Android 在Oreo中使用JobIntentService调度任务,android,background-service,android-8.1-oreo,Android,Background Service,Android 8.1 Oreo,我已经绝望了,两天来我一直在搜索如何安排android O的后台服务,但没有任何效果,每周一次,与Alarm manger一样,我读了很多文章,我认为JS中的所有解决方案都不是很多问题,因为它有新的操作系统和主题。 我知道android O正在进行优化并杀死/销毁服务,但我知道如果我使用JobIntentService安排服务,它应该可以工作。 这是我的密码 清单: <service android:name=".task.UpdateJobScheduler"
Alarm manger
一样,我读了很多文章,我认为JS中的所有解决方案都不是很多问题,因为它有新的操作系统和主题。
我知道android O正在进行优化并杀死/销毁服务,但我知道如果我使用JobIntentService安排服务,它应该可以工作。
这是我的密码
清单:
<service
android:name=".task.UpdateJobScheduler"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
就业意向服务
public class UpdateJobScheduler extends JobIntentService {
private final static String TAG = UpdateJobScheduler.class.getSimpleName();
public static final int JOB_ID = 0X32421;
@Inject
AttributesModel attributesModel;
@Inject
CategoriesModel categoriesModel;
private CompositeDisposable disposable;
@Override
public void onCreate() {
super.onCreate();
DaggerUpdateBroadcastReceiverComponent
.builder()
.appComponent(((MyApplication) getApplicationContext()).getAppComponent())
.build()
.inject(this);
disposable = new CompositeDisposable();
Log.e(TAG, "ON create");
}
public static void enqueueWork(Context context, Intent work) {
try {
if(work.getIntExtra("test",0) == JOB_ID ){
enqueueWork(context, UpdateJobScheduler.class, JOB_ID, work);
} else {
Log.e(TAG,"INTENT DATA UPDATE WRONG");
}
} catch (Exception e){
Log.e(TAG,"Service collapse");
}
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
Log.e(TAG, "working workingg!!!");
}
@Override
public boolean onStopCurrentWork() {
disposable.clear();
return super.onStopCurrentWork();
}
我试图在我的JobInfo
类中设置enqueueWork
,但它不起作用。
此外,我还了解到,没有必要将JobScheduler和jobIntentService结合在一起,可以在排队工作
上安排服务,但我确实在尝试找到解决方案,而且我真的没有从google找到任何有效的示例。
在控制台上,我看到有一次它工作了,但什么也没有
public class UpdateJobScheduler extends JobIntentService {
private final static String TAG = UpdateJobScheduler.class.getSimpleName();
public static final int JOB_ID = 0X32421;
@Inject
AttributesModel attributesModel;
@Inject
CategoriesModel categoriesModel;
private CompositeDisposable disposable;
@Override
public void onCreate() {
super.onCreate();
DaggerUpdateBroadcastReceiverComponent
.builder()
.appComponent(((MyApplication) getApplicationContext()).getAppComponent())
.build()
.inject(this);
disposable = new CompositeDisposable();
Log.e(TAG, "ON create");
}
public static void enqueueWork(Context context, Intent work) {
try {
if(work.getIntExtra("test",0) == JOB_ID ){
enqueueWork(context, UpdateJobScheduler.class, JOB_ID, work);
} else {
Log.e(TAG,"INTENT DATA UPDATE WRONG");
}
} catch (Exception e){
Log.e(TAG,"Service collapse");
}
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
Log.e(TAG, "working workingg!!!");
}
@Override
public boolean onStopCurrentWork() {
disposable.clear();
return super.onStopCurrentWork();
}