Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Oreo中使用JobIntentService调度任务_Android_Background Service_Android 8.1 Oreo - Fatal编程技术网

Android 在Oreo中使用JobIntentService调度任务

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"

我已经绝望了,两天来我一直在搜索如何安排android O的后台服务,但没有任何效果,每周一次,与
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();
}