Coder Social home page Coder Social logo

codelab-android-workmanager's Introduction

WorkManager Codelab

This repository contains the code for the WorkManager Codelab:

Java version

The Java version of this codelab is available under the Java branch of this repository.

Introduction

At I/O 2018 Google announced Android Jetpack, a collection of libraries, tools and architectural guidance to accelerate and simplify the development of great Android apps. One of those libraries is the WorkManager library. The WorkManager library provides a unified API for deferrable one-off or recurring background tasks that need guaranteed execution. You can learn more by reading the WorkManager Guide, the WorkManager Reference or doing the WorkManager Codelab.

Pre-requisites

  • Android Studio 3.6 or later and you know how to use it.

  • Make sure Android Studio is updated, as well as your SDK and Gradle. Otherwise, you may have to wait for a while until all the updates are done.

  • A device or emulator that runs API level 16+

You need to be solidly familiar with the Kotlin programming language, object-oriented design concepts, and Android Development Fundamentals. In particular:

Getting Started

  1. Install Android Studio, if you don't already have it.
  2. Download the sample.
  3. Import the sample into Android Studio.
  4. Build and run the sample.

License

Copyright 2018 Google, Inc.

All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav and *.ogg) are licensed under the CC BY 4.0 license. All other files are licensed under the Apache 2 license.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the LICENSE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

codelab-android-workmanager's People

Contributors

ahmedashour avatar calren avatar ceruleanotter avatar florina-muntenescu avatar josealcerreca avatar osuleymanova avatar pfmaggi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codelab-android-workmanager's Issues

Crash "Apps may not schedule more than 100 distinct jobs"

Hi, I am testing an app since a few days I have been scheduling tasks with workmanager everyday. today I added a new one and I got a crash with the following log (all my tasks of the previous days were already finished).
Now the app can not start anymore, unless I delete all the app's data.

1-Does this mean I had 100 tasks during the last few days?
2-Or does this mean my last task was accidentally launched >100 times?
if 1, why are we limited to 100 tasks

Is it a known issue? any help would be appreciated. thanks

06-01 13:11:09.180 696-4700/system_process W/JobSchedulerService: Too many jobs for uid 10095
E/AndroidRuntime: FATAL EXCEPTION: pool-2-thread-1
Process: tv.ebox.freetv.debug, PID: 26258
java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1691)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:85)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:64)
at androidx.work.impl.Schedulers.scheduleInternal(Schedulers.java:98)
at androidx.work.impl.Schedulers.schedule(Schedulers.java:69)
at androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:109)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:81)
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:761)

Unit test?

How do we write unit test for WorkManager class?

ArrayIndexOutOfBoundsException - androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.hasIntentWithAction

java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:579)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.hasIntentWithAction(SystemAlarmDispatcher.java:258)
.add(SystemAlarmDispatcher.java:138)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$AddRunnable.run(SystemAlarmDispatcher.java:306)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
at dalvik.system.NativeStart.main(Native Method)

androidx.work.Data in toByteArray java.lang.IllegalStateException

java.lang.IllegalStateException: Data cannot occupy more than 10240KB when serialized
at androidx.work.Data.toByteArray(Data.java:325)
at androidx.work.impl.model.WorkSpecDao_Impl$1.bind(WorkSpecDao_Impl.java:79)
.bind(WorkSpecDao_Impl.java:52)
at android.arch.persistence.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.java:63)
at androidx.work.impl.model.WorkSpecDao_Impl.insertWorkSpec(WorkSpecDao_Impl.java:199)
at androidx.work.impl.utils.EnqueueRunnable.enqueueWorkWithPrerequisites(EnqueueRunnable.java:266)
.enqueueContinuation(EnqueueRunnable.java:137)
.processContinuation(EnqueueRunnable.java:130)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:95)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
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)

Crashed when keep clicking go and cancel

ffff

com.example.background E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: com.example.background, PID: 28558
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.work.State.isFinished()' on a null object reference
at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndNotify(WorkerWrapper.java:192)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:146)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

Is WorkManager ready for production?

Hi (-:
WorkManager looks like a great API that can fit in many use cases. Especially running a work even after an app is closed/restarted.
Is WorkManager ready for use in production apps, and if not, can we get a rough estimation?

Crash when language is Arabic

While running the pre-launch report for our app we ran into a crash which looks to be caused by WorkManager.

FATAL EXCEPTION: pool-3-thread-1 Process: com.degoo.android, PID: 14486 android.database.sqlite.SQLiteException: no such column: ١٥٢٦٠٨٥٧٤٨٩٠١(Sqlite code 1): , while compiling: DELETE FROM workspec WHERE state IN (2, 3, 5) AND (period_start_time + minimum_retention_duration) < ١٥٢٦٠٨٥٧٤٨٩٠١ AND(SELECT COUNT(*)=0 FROM dependency WHERE prerequisite_id=id AND work_spec_id NOT IN (SELECT id FROM workspec WHERE state IN (2, 3, 5))),(OS error - 2:No such file or directory) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1724) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1650) at android.arch.persistence.db.framework.a.c(S:240) at androidx.work.impl.WorkDatabase$1.a(S:114) at androidx.work.impl.WorkDatabase_Impl$1.c(S:82) at android.arch.persistence.room.f.b(S:101) at android.arch.persistence.db.framework.b$a.onOpen(S:133) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:266) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) at android.arch.persistence.db.framework.b$a.a(S:93) at android.arch.persistence.db.framework.b.a(S:54) at android.arch.persistence.room.e.a(S:204) at android.arch.persistence.room.h.c(S:65) at android.arch.persistence.room.h.b(S:1072) at androidx.work.impl.b.l.a(S:326) at androidx.work.impl.f.c(S:393) at androidx.work.impl.c.c.run(S:66) at java.util.concurrent.ThreadPoolExecutor.runWo

I'm guessing the problem is caused by private static String getPruneSQL() using the default locale of the device instead of English.

No tests

There is no tests for this codelab so it seems unfinished. It would be great to add the examples of tests for workers, like in other AAC codelabs.

Notification throwing a RemoteServiceException

Setting a vector as the small notification icon is throwing RemoteServiceException. I ended up using a png drawable, now it works. I know they're other solution but this is the fastest.

SmallIcon caused error

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_launcher_foreground) --> it will cause error, I change to ic_launcher_background and it works. ic_launcher_foreground is only for api 24, I ran on 23

androidx.work.impl.utils.EnqueueRunnable in addToDatabase android.database.sqlite.SQLiteException

Stack Trace

android.database.sqlite.SQLiteException: near "issing": syntax error (code 1): , while compiling: issing type parameter.
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1291)
at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.query(FrameworkSQLiteDatabase.java:161)
at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.query(FrameworkSQLiteDatabase.java:150)
at android.arch.persistence.room.RoomOpenHelper.hasRoomMasterTable(RoomOpenHelper.java:151)
at android.arch.persistence.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.java:123)
.onOpen(RoomOpenHelper.java:115)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:151)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:266)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.beginTransaction(RoomDatabase.java:252)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:93)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

Didn't find WorkSpec for id **********

When i call the one time request again and again, I get Didn't find WorkSpec for id message for the completed requests.

Lets say if i call onetimerequest and its id is 475c853c-09b8-4d38-9074-0b373f60c1b7. It gets completed and then if i call the method again it creates new onetime request with id 564a7af4-f871-48a2-9737-ab000c4098e7 and enqueue it but give me error message Didn't find WorkSpec for id 475c853c-09b8-4d38-9074-0b373f60c1b7

Does this mean i shouldn't be creating new instance of OneTimeWorkRequest every time but only one instance throughout the app for that specific worker class.

public static void runOneTimeRequest() {
   Constraints mConstraints = new Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .build();
   OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(OneTimeWorker.class)
    .setConstraints(mConstraints)
    .addTag("one_time")
    .build();
   WorkManager.getInstance().beginUniqueWork(TAG_ONETIME_REQUEST, ExistingWorkPolicy.KEEP, oneTimeWorkRequest)
    .enqueue();

Stable version

At the moment the library is at version 1.0.0-alpha08, I would like to use it in an app on the production channel but I do not think it's a good idea as long as it remains in the apha version.
Is it possible to know when it will be released in a stable version?
There is a roadmap?

androidx.work.impl.utils.EnqueueRunnable in addToDatabase - android.database.sqlite.SQLiteFullException

Stack Trace

android.database.sqlite.SQLiteFullException: disk I/O error (code 7434): , while compiling: PRAGMA journal_mode
#################################################################
Error Code : 7434 (SQLITE_IOERR_SHMSIZE_FULL)
Caused By : No available space in disk.(ENOSPC)
(disk I/O error (code 7434): , while compiling: PRAGMA journal_mode)
#################################################################
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1008)
at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:712)
at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:389)
at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:360)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:252)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:203)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:518)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:209)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:181)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1152)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1097)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:828)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:681)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:319)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.beginTransaction(RoomDatabase.java:252)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:93)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
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)

Periodic job has invalid repeat period

    public static class PeriodicWork extends Worker{

        @NonNull
        @Override
        public WorkerResult doWork() {
            Log.d("sdssd", "check");
            try {
                Thread.sleep(DELAY_TIME_MILLIS, 0);
            } catch (InterruptedException e) {
                Log.d(TAG, e.getMessage());
            }
            return WorkerResult.SUCCESS;
        }
    }
PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(PeriodicWork.class, PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS)
.setConstraints(new Constraints.Builder()
        .setRequiredNetworkType(NetworkType.CONNECTED)
        .build())
.build();
mWorkManager.enqueue(build);

MIN_PERIODIC_INTERVAL_MILLIS = 15 * 60 * 1000L; // 15 minutes.
Emulator API 22
http://prntscr.com/jirmtm
Please help. Thanks for your support.

PeriodicWorkRequest not working properly in API 23

I am working on an application in which I have to increase day counter by 1 after completion of 24 hours.
My PeriodicWorkRequest code is as follow:

build.gradle (app):

ext {
    workVersion = "1.0.0-alpha02"
}
dependencies {
    ...
    // WorkManager for background service
    implementation "android.arch.work:work-runtime:$workVersion"
    // optional - Firebase JobDispatcher support
    implementation "android.arch.work:work-firebase:$workVersion"
    ...
}

Below code is in ViewModel Class which extends AndroidViewModel:

PeriodicWorkRequest.Builder dayWorkBuilder =
                new PeriodicWorkRequest.Builder(DayIncrementWorker.class, 24, TimeUnit.HOURS, 5,
                        TimeUnit.MINUTES);
      
        // Add Tag to workBuilder
        dayWorkBuilder.addTag(AppConstants.DAY_INCREMENT_WORK_NAME);
        // Create the actual work object:
        PeriodicWorkRequest dayWork = dayWorkBuilder.build();
        // Then enqueue the recurring task:
        mWorkManager.enqueue(dayWork);

I have noticed two issues when I get message "Flex duration is currently not supported before API 24. Ignoring." in Logcat.

Issue1: In API 23 devices as well as emulator with API 23, Worker executes two times when it schedules PeriodicWorkRequest and it increase my day counter twice. At that time I got bellow log message in Logcat.

06-19 11:26:09.606 23494-23605/com.packagename D/SystemJobInfoConverter: Flex duration is currently not supported before API 24. Ignoring.
06-19 11:26:09.607 23494-23605/com.packagename D/SystemJobScheduler: Scheduling work ID e4645b6c-8772-4184-a6e1-b0673146762f Job ID 0
06-19 11:26:09.616 23494-23605/com.packagename D/SystemJobInfoConverter: Flex duration is currently not supported before API 24. Ignoring.
06-19 11:26:09.616 23494-23605/com.packagename D/SystemJobScheduler: Scheduling work ID e4645b6c-8772-4184-a6e1-b0673146762f Job ID 1

Issue2: In API 23 devices as well as emulator with API 23, Worker executes randomly. Though I set PeriodicWorkRequest for 24 hour, when I close and kill app from the background and launch again, it increase my counter.
I was facing same issue(b/79660657) in version '1.0.0-alpha01' in 'Samsung (Galaxy On7 Pro Model SM-G600FY, Android 6.0.1, API 23)' device but after updating to version '1.0.0-alpha02' it get resolved in that 'Samsung' device but it still exist in 'OnePlus2 (Model ONE A2003, Android 6.0.1, API 23)' device. The only difference is that in version '1.0.0-alpha01' it was updating value everytime I close app and launch app again and in '1.0.0-alpha02' it is happening randomly not everytime I close and launch app again. Don't know why!

Above mentioned Issue1 still exists in 'Samsung' Device. It increase day counter twice very first time when job is schedule via Worker.

I have Noticed one thing that these two issues exist only in API 23 devices where I got 'Flex duration is currently not supported before API 24. Ignoring.' message in Logcat. Except API 23, it works fine. I have tested in LG-G2 (Model LG-D800, Android 5.0.2, API 21) as well as different emulators it is working fine.

java.lang.NullPointerException

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.work.WorkManager.enqueue(androidx.work.WorkRequest[])' on a null object reference

// Create a Constraints that defines when the task should run if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { PeriodicWorkRequest.Builder photoCheckBuilder = new PeriodicWorkRequest.Builder(AppInitManager.class, 15, TimeUnit.MINUTES); PeriodicWorkRequest photoCheckWork = photoCheckBuilder.build(); WorkManager.getInstance().enqueue(photoCheckWork); }

Sending Uri.toString() in Bundle.

This is dangerous way to place an Uri to a Bundle by means of toString() if it contains non-latin characters:

private Data createInputDataForUri() {
    Data.Builder builder = new Data.Builder();
    if (mImageUri != null) {
        builder.putString(KEY_IMAGE_URI, mImageUri.toString());
    }
    return builder.build();
}

It should be changed to:

private Data createInputDataForUri() {
    Data.Builder builder = new Data.Builder();
    if (mImageUri != null) {
        builder.putParcelable(KEY_IMAGE_URI, mImageUri);
    }
    return builder.build();
}

I suppose. And correspondent getParcelable(KEY_IMAGE_URI) on the other side.

androidx.work.impl.background.systemjob.SystemJobService in onStartJob - java.lang.IllegalArgumentException

Stack Trace

java.lang.RuntimeException: java.lang.IllegalArgumentException: Duplicate key in ArrayMap: null
at android.app.job.JobService$JobHandler.handleMessage(JobService.java:130)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalArgumentException: Duplicate key in ArrayMap: null
at android.util.ArrayMap.validate(ArrayMap.java:540)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2621)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.getString(BaseBundle.java:920)
at androidx.work.impl.background.systemjob.SystemJobService.onStartJob(SystemJobService.java:64)
at android.app.job.JobService$JobHandler.handleMessage(JobService.java:126)
... 6 more

ANR - androidx.work.impl.background.systemalarm.RescheduleReceiver

Hi,
I've ANRs here:
Broadcast of Intent { act=android.intent.action.TIME_SET flg=0x35200010 cmp=com.xxx.xxx/androidx.work.impl.background.systemalarm.RescheduleReceiver }

On phones:
OnePlus OnePlus3T android 8.0, OnePlus OnePlus5T android 8.1

My app compilation infos:
compile and target SDK 28, buildTools 27.0.3, gmsVersion 11.8.0, supportVersion 27.1.1, minSdk 14, android.arch.work:work-runtime:1.0.0-alpha03.

The full logs:

"main" tid=1 Native 
"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x73ae2f00 self=0xf29f5000
  | sysTid=1775 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xf65034a8
  | state=S schedstat=( 0 0 0 ) utm=13 stm=5 core=2 HZ=100
  | stack=0xff068000-0xff06a000 stackSize=8MB
  | held mutexes=
  #00  pc 0000000000049a34  /system/lib/libc.so (__epoll_pwait+20)
  #01  pc 000000000001b979  /system/lib/libc.so (epoll_pwait+60)
  #02  pc 000000000001b9a9  /system/lib/libc.so (epoll_wait+12)
  #03  pc 0000000000010407  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+118)
  #04  pc 00000000000102f9  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+32)
  #05  pc 00000000000b7be9  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+24)
  #06  pc 00000000001affdd  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:325)
  at android.os.Looper.loop (Looper.java:142)
  at android.app.ActivityThread.main (ActivityThread.java:6798)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
"Jit thread pool worker thread 0" tid=2 Native 
"Jit thread pool worker thread 0" daemon prio=5 tid=2 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c01b0 self=0xe8f0c000
  | sysTid=1780 nice=9 cgrp=bg_non_interactive sched=0/0 handle=0xe9206970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
  | stack=0xe9108000-0xe910a000 stackSize=1022KB
  | held mutexes=
  #00  pc 0000000000019108  /system/lib/libc.so (syscall+28)
  #01  pc 00000000000b38c1  /system/lib/libart.so (_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+88)
  #02  pc 000000000036a963  /system/lib/libart.so (_ZN3art10ThreadPool7GetTaskEPNS_6ThreadE+170)
  #03  pc 000000000036a207  /system/lib/libart.so (_ZN3art16ThreadPoolWorker3RunEv+62)
  #04  pc 0000000000369e1d  /system/lib/libart.so (_ZN3art16ThreadPoolWorker8CallbackEPv+92)
  #05  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #06  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"ReferenceQueueDaemon" tid=4 Waiting 
"ReferenceQueueDaemon" daemon prio=5 tid=4 Waiting
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x1b9c02c0 self=0xe17cfa00
  | sysTid=1782 nice=4 cgrp=bg_non_interactive sched=0/0 handle=0xd3ede970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xd3ddc000-0xd3dde000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x05c7f043> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
  at java.lang.Daemons$ReferenceQueueDaemon.runInternal (Daemons.java:186)
- locked <0x05c7f043> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
  at java.lang.Daemons$Daemon.run (Daemons.java:111)
  at java.lang.Thread.run (Thread.java:764)
"FinalizerWatchdogDaemon" tid=5 Sleeping 
"FinalizerWatchdogDaemon" daemon prio=5 tid=5 Sleeping
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x1b9c0348 self=0xe8ede600
  | sysTid=1784 nice=4 cgrp=bg_non_interactive sched=0/0 handle=0xd3cd4970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xd3bd2000-0xd3bd4000 stackSize=1038KB
  | held mutexes=
  at java.lang.Thread.sleep (Native method)
- sleeping on <0x0827e6c0> (a java.lang.Object)
  at java.lang.Thread.sleep (Thread.java:373)
- locked <0x0827e6c0> (a java.lang.Object)
  at java.lang.Thread.sleep (Thread.java:314)
  at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor (Daemons.java:355)
  at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization (Daemons.java:396)
  at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal (Daemons.java:289)
  at java.lang.Daemons$Daemon.run (Daemons.java:111)
  at java.lang.Thread.run (Thread.java:764)
"Binder:1775_1" tid=6 Native 
"Binder:1775_1" prio=5 tid=6 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c03d0 self=0xe8f0fc00
  | sysTid=1787 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd38cc970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100
  | stack=0xd37d2000-0xd37d4000 stackSize=1006KB
  | held mutexes=
  #00  pc 0000000000049b70  /system/lib/libc.so (__ioctl+8)
  #01  pc 000000000001e3f3  /system/lib/libc.so (ioctl+38)
  #02  pc 0000000000048063  /system/lib/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+202)
  #03  pc 0000000000048171  /system/lib/libbinder.so (_ZN7android14IPCThreadState20getAndExecuteCommandEv+8)
  #04  pc 00000000000486db  /system/lib/libbinder.so (_ZN7android14IPCThreadState14joinThreadPoolEb+38)
  #05  pc 000000000005ecdd  /system/lib/libbinder.so (???)
  #06  pc 000000000000d4f9  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+140)
  #07  pc 000000000007a829  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80)
  #08  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #09  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"FinalizerDaemon" tid=8 Waiting 
"FinalizerDaemon" daemon prio=5 tid=8 Waiting
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x1b9c0458 self=0xe1730000
  | sysTid=1783 nice=4 cgrp=bg_non_interactive sched=0/0 handle=0xd3dd9970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd3cd7000-0xd3cd9000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x09cbeff9> (a java.lang.Object)
  at java.lang.Object.wait (Object.java:422)
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:188)
- locked <0x09cbeff9> (a java.lang.Object)
  at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:209)
  at java.lang.Daemons$FinalizerDaemon.runInternal (Daemons.java:240)
  at java.lang.Daemons$Daemon.run (Daemons.java:111)
  at java.lang.Thread.run (Thread.java:764)
"Binder:1775_2" tid=9 Native 
"Binder:1775_2" prio=5 tid=9 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c04e0 self=0xdfef6200
  | sysTid=1789 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd37cf970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd36d5000-0xd36d7000 stackSize=1006KB
  | held mutexes=
  #00  pc 0000000000049b70  /system/lib/libc.so (__ioctl+8)
  #01  pc 000000000001e3f3  /system/lib/libc.so (ioctl+38)
  #02  pc 0000000000048063  /system/lib/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+202)
  #03  pc 0000000000048171  /system/lib/libbinder.so (_ZN7android14IPCThreadState20getAndExecuteCommandEv+8)
  #04  pc 00000000000486db  /system/lib/libbinder.so (_ZN7android14IPCThreadState14joinThreadPoolEb+38)
  #05  pc 000000000005ecdd  /system/lib/libbinder.so (???)
  #06  pc 000000000000d4f9  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+140)
  #07  pc 000000000007a829  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80)
  #08  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #09  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"Binder:1775_3" tid=10 Native 
"Binder:1775_3" prio=5 tid=10 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0568 self=0xe8f1e800
  | sysTid=1793 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd368d970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd3593000-0xd3595000 stackSize=1006KB
  | held mutexes=
  #00  pc 0000000000049b70  /system/lib/libc.so (__ioctl+8)
  #01  pc 000000000001e3f3  /system/lib/libc.so (ioctl+38)
  #02  pc 0000000000048063  /system/lib/libbinder.so (_ZN7android14IPCThreadState14talkWithDriverEb+202)
  #03  pc 0000000000048171  /system/lib/libbinder.so (_ZN7android14IPCThreadState20getAndExecuteCommandEv+8)
  #04  pc 00000000000486db  /system/lib/libbinder.so (_ZN7android14IPCThreadState14joinThreadPoolEb+38)
  #05  pc 000000000005ecdd  /system/lib/libbinder.so (???)
  #06  pc 000000000000d4f9  /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+140)
  #07  pc 000000000007a829  /system/lib/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+80)
  #08  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #09  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"Profile Saver" tid=11 Native 
"Profile Saver" daemon prio=5 tid=11 Native
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x1b9c05f0 self=0xdfcafe00
  | sysTid=1797 nice=9 cgrp=bg_non_interactive sched=0/0 handle=0xd2b02970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd2a08000-0xd2a0a000 stackSize=1006KB
  | held mutexes=
  #00  pc 0000000000019108  /system/lib/libc.so (syscall+28)
  #01  pc 00000000000b38c1  /system/lib/libart.so (_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+88)
  #02  pc 000000000025580f  /system/lib/libart.so (_ZN3art12ProfileSaver3RunEv+342)
  #03  pc 000000000025731f  /system/lib/libart.so (_ZN3art12ProfileSaver21RunProfileSaverThreadEPv+50)
  #04  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #05  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"GoogleApiHandler" tid=12 Native 
"GoogleApiHandler" prio=5 tid=12 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0678 self=0xe8ee0a00
  | sysTid=1808 nice=9 cgrp=bg_non_interactive sched=0/0 handle=0xd28e5970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=2 core=3 HZ=100
  | stack=0xd27e3000-0xd27e5000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000049a34  /system/lib/libc.so (__epoll_pwait+20)
  #01  pc 000000000001b979  /system/lib/libc.so (epoll_pwait+60)
  #02  pc 000000000001b9a9  /system/lib/libc.so (epoll_wait+12)
  #03  pc 0000000000010407  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+118)
  #04  pc 00000000000102f9  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+32)
  #05  pc 00000000000b7be9  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+24)
  #06  pc 00000000001affdd  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:325)
  at android.os.Looper.loop (Looper.java:142)
  at android.os.HandlerThread.run (HandlerThread.java:65)
"pool-5-thread-1" tid=13 Waiting 
"pool-5-thread-1" prio=5 tid=13 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0c40 self=0xd2371600
  | sysTid=1828 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd22ff970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=3 HZ=100
  | stack=0xd21fd000-0xd21ff000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x06d292b5> (a java.lang.Object)
  at java.lang.Thread.parkFor$ (Thread.java:2135)
- locked <0x06d292b5> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:358)
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
  at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:764)
"OkHttp ConnectionPool" tid=14 TimedWaiting 
"OkHttp ConnectionPool" daemon prio=5 tid=14 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c1548 self=0xe65cfc00
  | sysTid=1845 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd2767970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd2665000-0xd2667000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x0003cdd8> (a com.android.okhttp.ConnectionPool)
  at com.android.okhttp.ConnectionPool$1.run (ConnectionPool.java:103)
- locked <0x0003cdd8> (a com.android.okhttp.ConnectionPool)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:764)
"pool-1-thread-1" tid=15 TimedWaiting 
"pool-1-thread-1" prio=5 tid=15 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0760 self=0xdfef5000
  | sysTid=1814 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd25d6970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
  | stack=0xd24d4000-0xd24d6000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x02893b3e> (a java.lang.Object)
  at java.lang.Thread.parkFor$ (Thread.java:2135)
- locked <0x02893b3e> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:358)
  at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2101)
  at java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:467)
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1086)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:764)
"Measurement Worker" tid=16 TimedWaiting 
"Measurement Worker" prio=5 tid=16 TimedWaiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c08e8 self=0xe65cf000
  | sysTid=1817 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd1d6d970
  | state=S schedstat=( 0 0 0 ) utm=2 stm=1 core=2 HZ=100
  | stack=0xd1c6b000-0xd1c6d000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x046f4d9f> (a java.lang.Object)
  at java.lang.Object.wait (Object.java:422)
  at com.google.android.gms.internal.zzcgk.run (unavailable)
- locked <0x046f4d9f> (a java.lang.Object)
"pool-5-thread-2" tid=17 Waiting 
"pool-5-thread-2" prio=5 tid=17 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0dc8 self=0xd2372200
  | sysTid=1829 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd147f970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd137d000-0xd137f000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x0d59cd4a> (a java.lang.Object)
  at java.lang.Thread.parkFor$ (Thread.java:2135)
- locked <0x0d59cd4a> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:358)
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
  at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:764)
"pool-4-thread-1" tid=18 Waiting 
"pool-4-thread-1" prio=5 tid=18 Waiting
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c0ab8 self=0xe65d0200
  | sysTid=1821 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd162a970
  | state=S schedstat=( 0 0 0 ) utm=6 stm=1 core=2 HZ=100
  | stack=0xd1528000-0xd152a000 stackSize=1038KB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x0504aeec> (a java.lang.Object)
  at java.lang.Thread.parkFor$ (Thread.java:2135)
- locked <0x0504aeec> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:358)
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2059)
  at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
  at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1087)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1147)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
  at java.lang.Thread.run (Thread.java:764)
"queued-work-looper" tid=20 Native 
"queued-work-looper" prio=5 tid=20 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c1368 self=0xd2372800
  | sysTid=1831 nice=-2 cgrp=bg_non_interactive sched=0/0 handle=0xd1275970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=1 core=2 HZ=100
  | stack=0xd1173000-0xd1175000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000049a34  /system/lib/libc.so (__epoll_pwait+20)
  #01  pc 000000000001b979  /system/lib/libc.so (epoll_pwait+60)
  #02  pc 000000000001b9a9  /system/lib/libc.so (epoll_wait+12)
  #03  pc 0000000000010407  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+118)
  #04  pc 00000000000102f9  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+32)
  #05  pc 00000000000b7be9  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+24)
  #06  pc 00000000001affdd  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:325)
  at android.os.Looper.loop (Looper.java:142)
  at android.os.HandlerThread.run (HandlerThread.java:65)
"TcmReceiver" tid=21 Native 
"TcmReceiver" prio=5 tid=21 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x1b9c1450 self=0xe65cf600
  | sysTid=1832 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xd107f970
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0xd0f7d000-0xd0f7f000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000049a08  /system/lib/libc.so (__connect+8)
  #01  pc 000000000000136b  /system/lib/libnetd_client.so (???)
  #02  pc 0000000000006c37  /system/lib/libcutils.so (socket_local_client_connect+42)
  #03  pc 00000000000bbe63  /system/lib/libandroid_runtime.so (???)
  #04  pc 000000000059d111  /system/framework/arm/boot-framework.oat (Java_android_net_LocalSocketImpl_connectLocal__Ljava_io_FileDescriptor_2Ljava_lang_String_2I+120)
  at android.net.LocalSocketImpl.connectLocal (Native method)
  at android.net.LocalSocketImpl.connect (LocalSocketImpl.java:292)
  at android.net.LocalSocket.connect (LocalSocket.java:145)
- locked <0x0d0524bb> (a android.net.LocalSocket)
  at com.qti.tcmclient.DpmTcmClient$TcmReceiver.run (DpmTcmClient.java:106)
  at java.lang.Thread.run (Thread.java:764)
"Signal Catcher" tid=3 Runnable 
"Signal Catcher" daemon prio=5 tid=3 Runnable
  | group="system" sCount=0 dsCount=0 flags=0 obj=0x1b9c0238 self=0xf29f5c00
  | sysTid=1781 nice=0 cgrp=bg_non_interactive sched=0/0 handle=0xe9105970
  | state=R schedstat=( 0 0 0 ) utm=0 stm=4 core=0 HZ=100
  | stack=0xe900b000-0xe900d000 stackSize=1006KB
  | held mutexes= "mutator lock"(shared held)
  #00  pc 00000000002c4077  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+130)
  #01  pc 000000000035576d  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+200)
  #02  pc 0000000000351c3f  /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+34)
  #03  pc 000000000036963b  /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+650)
  #04  pc 0000000000363169  /system/lib/libart.so (_ZN3art10ThreadList13RunCheckpointEPNS_7ClosureES2_+320)
  #05  pc 0000000000362cc9  /system/lib/libart.so (_ZN3art10ThreadList4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEb+536)
  #06  pc 0000000000362983  /system/lib/libart.so (_ZN3art10ThreadList14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+650)
  #07  pc 000000000033ffa7  /system/lib/libart.so (_ZN3art7Runtime14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+122)
  #08  pc 0000000000346e87  /system/lib/libart.so (_ZN3art13SignalCatcher13HandleSigQuitEv+1146)
  #09  pc 00000000003460c1  /system/lib/libart.so (_ZN3art13SignalCatcher3RunEPv+240)
  #10  pc 000000000004840f  /system/lib/libc.so (_ZL15__pthread_startPv+22)
  #11  pc 000000000001b54d  /system/lib/libc.so (__start_thread+32)
"HeapTaskDaemon" tid=7 Blocked 
"HeapTaskDaemon" daemon prio=5 tid=7 Blocked
  | group="system" sCount=1 dsCount=0 flags=1 obj=0x1b9c1680 self=0xe8edec00
  | sysTid=1785 nice=4 cgrp=bg_non_interactive sched=0/0 handle=0xd3bcf970
  | state=S schedstat=( 0 0 0 ) utm=2 stm=1 core=1 HZ=100
  | stack=0xd3acd000-0xd3acf000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000019108  /system/lib/libc.so (syscall+28)
  #01  pc 00000000000b38c1  /system/lib/libart.so (_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+88)
  #02  pc 00000000001c0601  /system/lib/libart.so (_ZN3art2gc13TaskProcessor7GetTaskEPNS_6ThreadE+284)
  #03  pc 00000000001c0be1  /system/lib/libart.so (_ZN3art2gc13TaskProcessor11RunAllTasksEPNS_6ThreadE+44)
  #04  pc 00000000001cb4eb  /system/framework/arm/boot-core-libart.oat (Java_dalvik_system_VMRuntime_runHeapTasks__+74)
  at dalvik.system.VMRuntime.runHeapTasks (Native method)
- waiting to lock an unknown object
  at java.lang.Daemons$HeapTaskDaemon.runInternal (Daemons.java:493)
  at java.lang.Daemons$Daemon.run (Daemons.java:111)
  at java.lang.Thread.run (Thread.java:764)

What's That; App crashes when doing any process

2018-06-26 15:56:38.523 12315-12315/? E/Zygote: v2
2018-06-26 15:56:38.524 12315-12315/? E/Zygote: accessInfo : 0
2018-06-26 15:56:41.764 12315-12315/com.example.background E/BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib64, /vendor/lib64]]
2018-06-26 15:56:53.644 12315-12622/com.example.background E/BlurWorker: Failed to decode input stream
java.io.FileNotFoundException: No entry for content://media/external/images/media/31382
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:144)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1151)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:988)
at android.content.ContentResolver.openInputStream(ContentResolver.java:708)
at com.example.background.workers.BlurWorker.doWork(BlurWorker.java:60)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:142)
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)
2018-06-26 15:56:53.646 12315-12622/com.example.background E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-2
Process: com.example.background, PID: 12315
java.lang.RuntimeException: Failed to decode input stream
at com.example.background.workers.BlurWorker.doWork(BlurWorker.java:76)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:142)
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.io.FileNotFoundException: No entry for content://media/external/images/media/31382
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:144)
at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:692)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1151)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:988)
at android.content.ContentResolver.openInputStream(ContentResolver.java:708)
at com.example.background.workers.BlurWorker.doWork(BlurWorker.java:60)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:142) 
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) 
2018-06-26 15:57:10.422 12315-12764/com.example.background E/WorkerWrapper: Didn't find WorkSpec for id 93571199-d23e-499f-8f68-59a012219790

Room conflict withe Work Manager dependencies

After adding workout manager dependencies already working module giving below error

java.lang.NoSuchMethodError: No direct method (Landroid/arch/persistence/room/DatabaseConfiguration;Landroid/arch/persistence/room/RoomOpenHelper$Delegate;Ljava/lang/String;)V in class Landroid/arch/persistence/room/RoomOpenHelper; or its super classes (declaration of 'android.arch.persistence.room.RoomOpenHelper' appears in /data/app/com.workoutapps.height.v2-FoiGsai4Uj3rgP8SvlPnOA==/split_lib_dependencies_apk.apk)
at androidx.work.impl.WorkDatabase_Impl.createOpenHelper(WorkDatabase_Impl.java:44)
at android.arch.persistence.room.RoomDatabase.init(RoomDatabase.java:110)
at android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:623)
at androidx.work.impl.WorkDatabase.create(WorkDatabase.java:100)
at androidx.work.impl.WorkManagerImpl.(WorkManagerImpl.java:159)
at androidx.work.impl.WorkManagerImpl.(WorkManagerImpl.java:138)
at androidx.work.impl.WorkManagerImpl.initialize(WorkManagerImpl.java:120)
at androidx.work.WorkManager.initialize(WorkManager.java:139)
at androidx.work.impl.WorkManagerInitializer.onCreate(WorkManagerInitializer.java:40)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1919)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1894)
at android.app.ActivityThread.installProvider(ActivityThread.java:6329)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5895)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5816)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1674)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)

Immediate work will not run if another periodic work can run during this period

I have this periodic work scheduled like this:

val expireNotificationWork = PeriodicWorkRequestBuilder<ShoppingListNotificationWorker>(1, TimeUnit.DAYS) // This will default to flex 1 day
                    .addTag(TAG_1)
                    .build()

            WorkManager.getInstance()?.enqueueUniquePeriodicWork(
                    jobName,
                    ExistingPeriodicWorkPolicy.REPLACE,
                    expireNotificationWork)

And an immediate work enqueued like this

val connectedConstraints = Constraints.Builder()
                    .setRequiredNetworkType(NetworkType.CONNECTED)
                    .build()

            val immediateWork = OneTimeWorkRequestBuilder<UpdateGeofencesWorker>()
                    .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 2, TimeUnit.SECONDS)
                    .setConstraints(connectedConstraints)
                    .addTag(ONETIME_TAG)
                    .build()

WorkManager.getInstance()?.enqueue(immediateWork)

Every time I enqueue the immediate work only the periodic work will run and not any one time work.
So the periodic work will run multiple times per day but the one time work never.

java.lang.IllegalStateException during androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal

We are using the following WorkManager

def work_version = "1.0.0-alpha02"
implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin
// optional - Firebase JobDispatcher support
implementation "android.arch.work:work-firebase:$work_version"

We not upgraded from 1.0.0-alpha02, as we want to maintain our targetSdkVersion 27.

In production, we notice the following crash report.

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 androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:85)
  at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule (SystemJobScheduler.java:64)
  at androidx.work.impl.Schedulers.scheduleInternal (Schedulers.java:98)
  at androidx.work.impl.Schedulers.schedule (Schedulers.java:69)
  at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork (WorkManagerImpl.java:398)
  at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:69)
  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)

Please advice how we can get rid of these crashed. Thanks.

Android X Issue

2018-06-26 15:40:04.412 6189-6597/com.example.background E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-3
Process: com.example.background, PID: 6189
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.work.State.isFinished()' on a null object reference
at androidx.work.impl.WorkerWrapper.tryCheckForInterruptionAndNotify(WorkerWrapper.java:192)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:146)
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)
.. When I click Go button then Cancel then Go, app crashes.

Add the intent data type

Intent actionView = new Intent(Intent.ACTION_VIEW, uri);
actionView.setDataAndType(uri,"image/*"); <-- add this will make the function works!

ConcurrentModificationException - androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.hasIntentWithAction

===========
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.hasIntentWithAction(SystemAlarmDispatcher.java:258)
.add(SystemAlarmDispatcher.java:138)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$AddRunnable.run(SystemAlarmDispatcher.java:306)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)

App crash using workmanager to enqueue a request

java.lang.NullPointerException: Attempt to invoke virtual method 'int androidx.work.ContentUriTriggers.size()' on a null object reference
at androidx.work.impl.model.WorkTypeConverters.contentUriTriggersToByteArray(WorkTypeConverters.java:256)
at androidx.work.impl.model.WorkSpecDao_Impl$1.bind(WorkSpecDao_Impl.java:117)
at androidx.work.impl.model.WorkSpecDao_Impl$1.bind(WorkSpecDao_Impl.java:48)
at android.arch.persistence.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.java:63)
at androidx.work.impl.model.WorkSpecDao_Impl.insertWorkSpec(WorkSpecDao_Impl.java:188)
at androidx.work.impl.utils.EnqueueRunnable.enqueueWorkWithPrerequisites(EnqueueRunnable.java:263)
at androidx.work.impl.utils.EnqueueRunnable.enqueueContinuation(EnqueueRunnable.java:134)
at androidx.work.impl.utils.EnqueueRunnable.processContinuation(EnqueueRunnable.java:127)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:95)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
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:761)

androidx.work.impl.WorkDatabase in onOpen java.lang.IllegalStateException

Stack Trace

java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/com.yahoo.mobile.client.android.mail/databases/androidx.work.workdb
at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522)
at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.endTransaction(FrameworkSQLiteDatabase.java:90)
at androidx.work.impl.WorkDatabase$1.onOpen(WorkDatabase.java:122)
at androidx.work.impl.WorkDatabase_Impl$1.onOpen(WorkDatabase_Impl.java:89)
at android.arch.persistence.room.RoomOpenHelper.onOpen(RoomOpenHelper.java:116)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:151)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:266)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.beginTransaction(RoomDatabase.java:252)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:93)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
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:761)

Unable to recreate the unique work after canceling the previous in Android O

Reproduce :

  1. Run the final app
  2. Click Cancel Button immediately (within 2 or 3 seconds)
  3. Click Go Button and it would be endless loop.
    in the log : 07-04 19:44:26.243 30225-30289/com.example.background E/WorkerWrapper: Status for 70a1791e-e62c-4d5a-90a0-8f109bc5dcc6 is BLOCKED; not doing any work

It is only happens in Android O. When I try in Android M and Android N it works smoothly.

Suggestion : it should recreate the unique which is the ExistingWorkPolicyStrategy is REPLACED

androidx.work.impl.utils.ForceStopRunnable in setAlarm$13462e - java.lang.SecurityException

Stack Trace

java.lang.SecurityException: get application info: Neither user 1110087 nor current process has android.permission.INTERACT_ACROSS_USERS.
at android.os.Parcel.readException(Parcel.java:1599)
at android.os.Parcel.readException(Parcel.java:1552)
at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:225)
at android.app.AlarmManager.setImpl(AlarmManager.java:469)
at android.app.AlarmManager.setExact(AlarmManager.java:407)
at androidx.work.impl.utils.ForceStopRunnable.setAlarm$13462e(ForceStopRunnable.java:133)
at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:89)
.run(ForceStopRunnable.java:72)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

FirebaseJobService could not be disabled

Emulator API 22
05-11 21:37:23.917 25729-25729/com.example.background D/PackageManagerHelper: androidx.work.impl.background.firebase.FirebaseJobService could not be disabled java.lang.IllegalArgumentException: Component class androidx.work.impl.background.firebase.FirebaseJobService does not exist in com.example.background at android.os.Parcel.readException(Parcel.java:1550) at android.os.Parcel.readException(Parcel.java:1499) at android.content.pm.IPackageManager$Stub$Proxy.setComponentEnabledSetting(IPackageManager.java:3394) at android.app.ApplicationPackageManager.setComponentEnabledSetting(ApplicationPackageManager.java:1489) at androidx.work.impl.utils.PackageManagerHelper.setComponentEnabled(PackageManagerHelper.java:51) at androidx.work.impl.Schedulers.createBestAvailableBackgroundScheduler(Schedulers.java:124) at androidx.work.impl.WorkManagerImpl.getSchedulers(WorkManagerImpl.java:190) at androidx.work.impl.WorkManagerImpl.<init>(WorkManagerImpl.java:164) at androidx.work.impl.WorkManagerImpl.<init>(WorkManagerImpl.java:138) at androidx.work.impl.WorkManagerImpl.initialize(WorkManagerImpl.java:120) at androidx.work.WorkManager.initialize(WorkManager.java:138) at androidx.work.impl.WorkManagerInitializer.onCreate(WorkManagerInitializer.java:40) at android.content.ContentProvider.attachInfo(ContentProvider.java:1696) at android.content.ContentProvider.attachInfo(ContentProvider.java:1671) at android.app.ActivityThread.installProvider(ActivityThread.java:4999) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Thanks for help

androidx.work.impl.utils.EnqueueRunnable in addToDatabase - android.database.sqlite.SQLiteDiskIOException

Stack Trace

android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 4874): , while compiling: PRAGMA journal_mode
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:632)
at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:318)
at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:289)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:213)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:571)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:269)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.beginTransaction(RoomDatabase.java:252)
at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(EnqueueRunnable.java:93)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:79)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

WorkManager create every time new thread?

I am calling this code every 5 seconds

OneTimeWorkRequest  checkConn =
                new OneTimeWorkRequest
                        .Builder(ConnectionHelper.class)
                        .build();

WorkManager.getInstance().enqueue(checkConn);

And i see i the profiler that the number of thread increase every 5 seconds, does it create new thread? it is not run the task on the same thread?

App crash with vector drawable as notification icon

Emulator: Nexus 5, API 23

android.app.RemoteServiceException: Bad notification posted from package com.xxx.xxx: Couldn't create icon: StatusBarIcon(pkg=com.example.background=0 id=0x7f020082 level=0 visible=true num=0)

If we use png drawable like android.R.drawable.ic_menu_add is working

Check WorkerUtils.java line 83 ".setSmallIcon(R.drawable.ic_launcher_foreground)"

NullPointerException - WorkManager.getInstance().cancelAllWorkByTag()

when I use WorkManager.getInstance() in my Application , fabric tell me some user get NPE by call WorkManager.getInstance().cancelAllWorkByTag().

I see the source code , WorkManagerInitializer will init the WorkManger in ContentProvider, why some user occur the NPE when call WorkManager.getInstance().cancelAllWorkByTag()?
Need I call WorkManager.initialize in My Application onCreate?

and some user occur the SQLException.

Fatal Exception: android.database.sqlite.SQLiteDatabaseCorruptException: file is encrypted or is not a database (code 26): , while compiling: PRAGMA journal_mode
       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
       at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:634)
       at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:320)
       at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:294)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
       at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
       at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)
       at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:796)
       at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)
       at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:652)
       at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:289)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
       at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(SourceFile:93)
       at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(SourceFile:54)
       at android.arch.persistence.room.RoomDatabase.inTransaction(SourceFile:305)
       at android.arch.persistence.room.InvalidationTracker$1.run(SourceFile:281)
       at android.arch.persistence.room.InvalidationTracker.syncTriggers(SourceFile:437)
       at android.arch.persistence.room.RoomDatabase.beginTransaction(SourceFile:212)
       at androidx.work.impl.utils.CancelWorkRunnable$2.run(SourceFile:114)
       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:761)
Fatal Exception: android.database.sqlite.SQLiteException: Failed to change locale for db '/mnt/expand/bf86ea05-bc81-4312-a897-a26e94fc9e37/user/0/com.xxxx.xxxx/databases/androidx.work.workdb' to 'es_ES'.
       at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:393)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
       at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
       at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)
       at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)
       at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)
       at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:680)
       at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:289)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
       at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(SourceFile:93)
       at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(SourceFile:54)
       at android.arch.persistence.room.RoomDatabase.inTransaction(SourceFile:305)
       at android.arch.persistence.room.InvalidationTracker$1.run(SourceFile:281)
       at android.arch.persistence.room.InvalidationTracker.syncTriggers(SourceFile:437)
       at android.arch.persistence.room.RoomDatabase.beginTransaction(SourceFile:212)
       at androidx.work.impl.utils.EnqueueRunnable.addToDatabase(SourceFile:93)
       at androidx.work.impl.utils.EnqueueRunnable.run(SourceFile:79)
       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:761)

It's looks like the database has not been initialized. so the WorkManger not init?

PeriodicWorkRequest after device startup

Task is never executed after device reboot. Did anyone try it? What I'm missing?

Android 8 on Pixel 2
PeriodicWorkRequest
RECEIVE_BOOT_COMPLETED in manifest.
android.arch.work:work-runtime + android.arch.work:work-firebase 1.0.0-alpha02

PeriodicWorkRequest.Builder periodicWorkBuilder= new PeriodicWorkRequest.Builder(WatchListWorker.class, 20, TimeUnit.MINUTES);
PeriodicWorkRequest periodicWork= periodicWorkBuilder.build();
WorkManager.getInstance().enqueue(periodicWork);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.