JobScheduler错误?

问题描述 投票:0回答:1

当我在Application#onCreate()方法中安排JobScheduler时,有时会遇到以下错误:

java.lang.IllegalArgumentException: No such service ComponentInfo{com.brain.MyJobService}
    at android.os.Parcel.readException(Parcel.java:1688)
    at android.os.Parcel.readException(Parcel.java:1637)
    at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
    at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
    at com.brain.MyScanJobService.configSchedule(MyJobService.java:341)
    at com.brain.MyJobService.configSchedule(MyJobService.java:317)
    at com.miui.optimizecenter.ApplicationDelegate$1.run(ApplicationDelegate.java:85)

我的守则简单如下:

AndroidManifest.xml中

<service
        android:name="com.brain.MyJobService"
        android:permission="android.permission.BIND_JOB_SERVICE">
</service>

MyJobService

public class MyJobService extends JobService {
    // ...
    public static void scheduleJob(Context context){
        // ...
        JobInfo scanJob = new JobInfo.Builder(MY_JOB_ID, new ComponentName(context, MyJobService.class))
                            .setPeriodic(1000*100)
                            .setPersisted(true)
                            .setRequiresDeviceIdle(true)
                            .build();
        // tag2
        jobScheduler.schedule(scanJob)
    }
    // ...
}

ApplicationDelegate#的onCreate()

public void onCreate() {
    super.onCreate();
    new Thread(new Runnable(){
        MyJobScheduler.scheduleJob();
    }).start()
}

除了Application#onCreate()方法之外,使用相同的配置方法可以很好地工作。

谢谢你的帮助!!!

android
1个回答
1
投票

尝试在清单声明中添加android:exported="true"

<service
        android:name="com.brain.MyJobService"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE">
</service>
© www.soinside.com 2019 - 2024. All rights reserved.