在 Google 控制台中,我在几个设备上看到以下异常,没有任何原因,我无法弄清楚我正在犯的错误。有时我收到 IllegalArgumentException 有时我收到 IllegalStateException
在模拟器中我没有得到这个异常,所以我无法重现它!
这是例外:
java.lang.RuntimeException:
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
Caused by: java.lang.IllegalStateException:
at android.os.Parcel.readException(Parcel.java:1701)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at do.that.Worker$1.doInBackground(Worker.java:907)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
Run Code Online (Sandbox Code Playgroud)
这是代码片段。我想提一下,我在 AsyncTask 中安排了作业。
ComponentName serviceComponent = new ComponentName(context, RetryJobSchedulerService.class);
JobInfo.Builder builder = new JobInfo.Builder(kJobId++, serviceComponent);
builder.setMinimumLatency(5 * 1000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = jobScheduler.schedule(builder.build());
Run Code Online (Sandbox Code Playgroud)
我为服务设置了权限:
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"
Run Code Online (Sandbox Code Playgroud)
错误可能是什么?
我正在使用带有Cyanogenmod的Android 6,当我开始以下意图时,没有任何反应!
if(Build.VERSION.SDK_INT >= Constants.IGNORE_BATTERY_OPTIMIZATIONS_MIN_BUILD) {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
Intent intent = new Intent(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse("package:" + packageName));
try {
startActivity(intent);
...
Run Code Online (Sandbox Code Playgroud)
电池优化的对话框应该出现吗?如果是这样,我做错了什么?