Fixed
Status Update
Comments
ru...@gmail.com <ru...@gmail.com> #2
Have same problem
su...@google.com <su...@google.com> #3
java.util.ConcurrentModificationException
at java.util.WeakHashMap$HashIterator.next(WeakHashMap.java:165)
at androidx.work.impl.utils.WakeLocks.checkWakeLocks(WakeLocks.java:70)
at androidx.work.impl.background.systemalarm.SystemAlarmService.onAllCommandsCompleted(SystemAlarmService.java:69)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.dequeueAndCheckForCompletion(SystemAlarmDispatcher.java:217)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$DequeueAndCheckForCompletion.run(SystemAlarmDispatcher.java:317)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(NativeStart.java)
at java.util.WeakHashMap$HashIterator.next(WeakHashMap.java:165)
at androidx.work.impl.utils.WakeLocks.checkWakeLocks(WakeLocks.java:70)
at androidx.work.impl.background.systemalarm.SystemAlarmService.onAllCommandsCompleted(SystemAlarmService.java:69)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.dequeueAndCheckForCompletion(SystemAlarmDispatcher.java:217)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$DequeueAndCheckForCompletion.run(SystemAlarmDispatcher.java:317)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(NativeStart.java)
ra...@google.com <ra...@google.com> #5
Will this be released in the next beta? Thanks
to...@gmail.com <to...@gmail.com> #7
Seems like it's still not fixed:
Fatal Exception: java.util.ConcurrentModificationException
at java.util.WeakHashMap$HashIterator.next(WeakHashMap.java:165)
at androidx.work.impl.utils.WakeLocks.checkWakeLocks(WakeLocks.java:78)
at androidx.work.impl.background.systemalarm.SystemAlarmService.onAllCommandsCompleted(SystemAlarmService.java:69)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.dequeueAndCheckForCompletion(SystemAlarmDispatcher.java:217)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$DequeueAndCheckForCompletion.run(SystemAlarmDispatcher.java:317)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5532)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
Fatal Exception: java.util.ConcurrentModificationException
at java.util.WeakHashMap$HashIterator.next(WeakHashMap.java:165)
at androidx.work.impl.utils.WakeLocks.checkWakeLocks(WakeLocks.java:78)
at androidx.work.impl.background.systemalarm.SystemAlarmService.onAllCommandsCompleted(SystemAlarmService.java:69)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.dequeueAndCheckForCompletion(SystemAlarmDispatcher.java:217)
at androidx.work.impl.background.systemalarm.SystemAlarmDispatcher$DequeueAndCheckForCompletion.run(SystemAlarmDispatcher.java:317)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5532)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
ru...@gmail.com <ru...@gmail.com> #8
Still happened on beta02, Android 5.0.2
ru...@gmail.com <ru...@gmail.com> #9
Sample app here: https://issuetracker.google.com/issues/121345393
It's hard to reproduce with SystemAlarmService.onAllCommandsCompleted. Only managed to do it once but it was just luck. The sample app crashes more often though.
It's hard to reproduce with SystemAlarmService.onAllCommandsCompleted. Only managed to do it once but it was just luck. The sample app crashes more often though.
da...@gmail.com <da...@gmail.com> #11
Thanks for the bug report and the sample app. Will take another look.
Description
Version used: implementation 'android.arch.work:work-runtime:1.0.0-alpha12'
Devices/Android versions reproduced on: Moto e3 Power / Andorid 6.0 Marshmallow
Sometimes Periodic workManager gets called two times.
This is my built.gradle file:-
compileSdkVersion 28
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Here is this code:-
//---------------------------------------------------------Class Login---------------------------------------------------------------------------------------//
SaveData("Frist");
PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(DailyLogoutTask.class,
1, TimeUnit.DAYS)
.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("DailyTaskRestaurantLite"
, ExistingPeriodicWorkPolicy.KEEP
, periodicWorkRequest);
private void SaveData(String str) {
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.putString("Status1", str);
preferencesEditor.apply();
}
//------------------------------------------------------Class DailyLogoutTask-----------------------------------------------------------------------//
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import android.util.Log;
import com.domo.ClsGlobal;
import com.demo.classes.ClsUserInfo;
import androidx.work.Result;
import androidx.work.WorkManager;
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import static android.content.Context.MODE_PRIVATE;
public class DailyLogoutTask extends Worker {
private SharedPreferences mPreferences;
private static final String mPreferncesName = "MyPerfernces";
Context context;
public DailyLogoutTask(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
this.context = context;
mPreferences = context.getSharedPreferences(mPreferncesName, MODE_PRIVATE);
Log.e("DailyLogoutTask", "DailyLogoutTask call");
}
@NonNull
@Override
public Result doWork() {
String getstatus = mPreferences.getString("Status1", "No Task Perform");
Log.d("---getstatus---", "----getstatus---" + getstatus);
Log.e("doWork", "doWork call");
if (!getstatus.equalsIgnoreCase("Frist")) {
ClsUserInfo userInfo = new ClsUserInfo();
ClsUserInfo userLoginStatus = ClsGlobal.getUserInfo(context);
if (!userLoginStatus.getLoginStatus().equalsIgnoreCase("DEACTIVE")){
Log.e("chack", "Logout");
userInfo.setLoginStatus("DEACTIVE");
ClsGlobal.setUserInfo(userInfo, context);
// ClsGlobal.sendNotification("IF", "IF background Logout".concat(ClsGlobal.getEntryDate()),context);
WorkManager.getInstance().cancelUniqueWork("DailyTaskRestaurantLite");
Log.d("getFirstDateOfMonth", "----UserInfo---" + userLoginStatus.getLoginStatus());
}
} else {
Log.e("chack", "Not Frist");
// ClsGlobal.sendNotification("ELSE", "ELSE background Logout".concat(ClsGlobal.getEntryDate()),context);
SaveData("Second");
}
return Result.success();
}
private void SaveData(String str) {
Log.e("SaveData", str);
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.putString("Status1", str);
preferencesEditor.apply();
}
If this is a bug in the library, we would appreciate if you could attach:
- Sample project to trigger the issue.
- A screenrecord or screenshots showing the issue (if UI related).