我已经绝望了,2天我正在搜索如何安排服务器在后台安装android O并且没有任何效果,每周一次与Alarm manger
相同,我读了一个很多文章,我认为JS中的所有解决方案都不是很多关于它的问题,因为它的新操作系统和主题。
我知道android O正在进行优化并杀死/销毁服务,但我知道如果我使用JobIntentService调度服务它应该正常工作。
这是我的代码
清单:
<service
android:name=".task.UpdateJobScheduler"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
之后我创建了JobScheduler:
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(context.getPackageName(),
UpdateJobScheduler.class.getName()))
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setMinimumLatency(1000) //just for test the number
.setOverrideDeadline(3000) //just for test the number
.setRequiresDeviceIdle(false)
.setRequiresCharging(false)
.setPersisted(false);
jobScheduler.schedule(builder.build());
JobIntent服务
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();
}
我也尝试在我的enqueueWork
课程中设置JobInfo
,但这不起作用。
另外我读到了将JobScheduler和jobIntentService组合在一起的必要性,它可以在enqueueWork
安排服务,但我真的试图找到解决方案,我真的没有找到任何例子从谷歌工作。
在控制台,我看到有一次它无效。