transistorsoft / flutter_background_fetch

Periodic callbacks in the background for both IOS and Android. Includes Android Headless mechanism
MIT License
568 stars 166 forks source link

[BUG] app crashes on work_manger cancel #313

Closed abdelaziz-mahdy closed 1 year ago

abdelaziz-mahdy commented 1 year ago

Your Environment

• No issues found!

* Plugin config

// [Android-only] This "Headless Task" is run when the Android app is terminated with enableHeadless: true // Be sure to annotate your callback function to avoid issues in release mode on Flutter >= 3.3.0 @pragma('vm:entry-point') void backgroundFetchHeadlessTask(HeadlessTask task) async { String taskId = task.taskId; bool isTimeout = task.timeout; if (isTimeout) { // This task has exceeded its allowed running-time. // You must stop what you're doing and immediately .finish(taskId) print("[BackgroundFetch] Headless task timed-out: $taskId"); BackgroundFetch.finish(taskId); return; } print('[BackgroundFetch] Headless event received.'); // Do your work here... try { DataBaseClassCONTROLLER dataBaseController = await Get.putAsync( () => DataBaseClassCONTROLLER().init(), permanent: true); await checkLatestJson(dataBaseController, notification: true); } catch () { print("headless background task failed $"); } BackgroundFetch.finish(taskId); }

// Platform messages are asynchronous, so we initialize in an async method. Future initPlatformState() async { // Configure BackgroundFetch. int status = await BackgroundFetch.configure( BackgroundFetchConfig( minimumFetchInterval: 30, stopOnTerminate: false, enableHeadless: true, requiresBatteryNotLow: false, requiresCharging: false, requiresStorageNotLow: false, requiresDeviceIdle: false, requiredNetworkType: NetworkType.ANY), (String taskId) async { try { DataBaseClassCONTROLLER dataBaseController = await Get.find();

  await checkLatestJson(dataBaseController, notification: true);
  await Get.find<SearchEngine>().getFavorites();
  await Get.find<SearchEngine>().getRecentAnime(1);
} catch (_) {
  print("background task failed $_");
}
// <-- Event handler
// This is the fetch-event callback.
// IMPORTANT:  You must signal completion of your task or the OS can punish your app
// for taking too long in the background.
BackgroundFetch.finish(taskId);

}, (String taskId) async { // <-- Task timeout handler. // This task has exceeded its allowed running-time. You must stop what you're doing and immediately .finish(taskId) print("[BackgroundFetch] TASK TIMEOUT taskId: $taskId"); BackgroundFetch.finish(taskId); }); print('[BackgroundFetch] configure success: $status'); }


**To Reproduce**
Steps to reproduce the behavior:
1. lanch tasks using work_manger package
2. stop multiple tasks 

**Debug logs**
- ios XCode logs, 
- Android: 

01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: Work [ id=54f5e5f3-e1c9-4bc4-9251-a0013e53d1cb, tags={ be.tramckrijte.workmanager.BackgroundWorker } ] was cancelled 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: java.util.concurrent.CancellationException: Task was cancelled. 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.a.d(Unknown Source:2) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.a.i(Unknown Source:30) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at androidx.work.impl.utils.futures.a.get(Unknown Source:21) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at n0.j$b.run(Unknown Source:4) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at v0.g$a.run(Unknown Source:2) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 01-28 01:12:48.186 13718 13736 I WM-WorkerWrapper: at java.lang.Thread.run(Thread.java:1012) 01-28 01:12:48.191 13718 13718 D AndroidRuntime: Shutting down VM 01-28 01:12:48.191 13718 13718 E AndroidRuntime: FATAL EXCEPTION: main 01-28 01:12:48.191 13718 13718 E AndroidRuntime: Process: com.zcreations.anime_here, PID: 13718 01-28 01:12:48.191 13718 13718 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void z4.j.e(z4.j$c)' on a null object reference 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at com.transistorsoft.flutter.backgroundfetch.a.g(Unknown Source:9) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at com.transistorsoft.flutter.backgroundfetch.b.onDetachedFromEngine(Unknown Source:4) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at io.flutter.embedding.engine.c.u(Unknown Source:121) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at io.flutter.embedding.engine.c.v(Unknown Source:16) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at io.flutter.embedding.engine.c.w(Unknown Source:11) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at io.flutter.embedding.engine.c.j(Unknown Source:10) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at io.flutter.embedding.engine.a.e(Unknown Source:31) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at be.tramckrijte.workmanager.BackgroundWorker.y(Unknown Source:9) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at be.tramckrijte.workmanager.BackgroundWorker.r(Unknown Source:0) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at x0.b.run(Unknown Source:2) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:942) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7872) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 01-28 01:12:48.191 13718 13718 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 01-28 01:12:48.193 1703 14015 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2 01-28 01:12:48.194 1703 2178 W ActivityTaskManager: Force finishing activity com.zcreations.anime_here/.MainActivity 01-28 01:12:48.204 13718 13718 I Process : Sending signal. PID: 13718 SIG: 9 01-28 01:12:48.211 2550 13020 I NetworkScheduler.Stats: Task com.google.android.gms/com.google.android.gms.ipa.base.IpaGcmTaskService finished executing. cause:5 result: 1 elapsed_millis: 47 uptime_millis: 47 exec_start_elapsed_seconds: 123475 [CONTEXT service_id=218 ] 01-28 01:12:48.214 3742 4414 I AssistantForeground: (REDACTED) Get launcher package: %s 01-28 01:12:48.214 3742 4414 I A : setScreenState 01-28 01:12:48.258 1703 2041 D CompatibilityChangeReporter: Compat change id reported: 194532703; UID 1000; state: ENABLED 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 2271129699865384196 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 1897601926725174045 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 621770508523184581 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 2271129699865384196 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 1897601926725174045 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.260 1044 1050 E statsd : DurationMetric 621770508523184581 dropping data for what dimension key (10)0x2010101->10179[I] (10)0x30000->job/gmail-ls/com.google/zezohassam@gmail.com:android#100334[S] 01-28 01:12:48.291 1703 20493 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver 01-28 01:12:48.292 1703 1780 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver 01-28 01:12:48.315 1703 5620 I ActivityManager: Process com.zcreations.anime_here (pid 13718) has died: vis TOP 01-28 01:12:48.315 1703 5620 W ActivityManager: Scheduling restart of crashed service com.zcreations.anime_here/androidx.work.impl.background.systemjob.SystemJobService in 1000ms for connection 01-28 01:12:48.315 1703 1783 I libprocessgroup: Successfully killed process cgroup uid 10289 pid 13718 in 0ms 01-28 01:12:48.316 1046 1046 I Zygote : Process 13718 exited due to signal 9 (Killed) 01-28 01:12:48.316 675 675 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:13794 01-28 01:12:48.316 675 675 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:13795 01-28 01:12:48.316 675 675 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:13718 01-28 01:12:48.316 675 675 W libprocessgroup: Failed to apply NoResetUclampGrp task profile: No such process 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: Failed to set NoResetUclampGrp task profile for tid:13737 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: sched_setattr failed for thread 13794, err=3 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: sched_setattr failed for thread 13795, err=3 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: sched_setattr failed for thread 13718, err=3 01-28 01:12:48.316 675 675 W powerhal-libperfmgr: sched_setattr failed for thread 13737, err=3 01-28 01:12:48.322 1703 2178 I WindowManager: WIN DEATH: Window{f885c6b u0 com.zcreations.anime_here/com.zcreations.anime_here.MainActivity} 01-28 01:12:48.323 1703 2178 W InputManager-JNI: Input channel object 'f885c6b com.zcreations.anime_here/com.zcreations.anime_here.MainActivity (client)' was disposed without first being removed with the input manager! 01-28 01:12:48.324 1703 1703 W JobScheduler: Job didn't exist in JobStore: 4cf3ae8 #u0a289/3277 com.zcreations.anime_here/androidx.work.impl.background.systemjob.SystemJobService 01-28 01:12:48.324 7826 7924 D OneSearchSuggestProvider: Created the binder channel successfully for end point service =com.google.android.apps.search.googleapp.search.suggest.plugins.onesearch.server.OneSearchSuggestService , mChannel=E2{delegate=w2{logId=433, target=directaddress:///AndroidComponentAddress%5BIntent%20%7B%20act=grpc.io.action.BIND%20cmp=com.google.android.googlequicksearchbox/com.google.android.apps.search.googleapp.search.suggest.plugins.onesearch.server.OneSearchSuggestService%20%7D%5D}} , mOneSearchConnection=Q1.d0@f638ae5 01-28 01:12:48.329 7826 7848 D QuickstepModelDelegate: notifyAppTargetEvent action=1 launchLocation=workspace/1/[-1,-1]/[1,1] 01-28 01:12:48.338 1703 1771 W WindowManager: Failed to deliver inset state change to w=Window{f885c6b u0 com.zcreations.anime_here/com.zcreations.anime_here.MainActivity EXITING} 01-28 01:12:48.338 1703 1771 W WindowManager: android.os.DeadObjectException 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.BinderProxy.transactNative(Native Method) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.BinderProxy.transact(BinderProxy.java:584) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:473) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:4013) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$4(InsetsStateController.java:351) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.InsetsStateController.$r8$lambda$An2IoiA3BeA5IWc6QwBOjKArM80(Unknown Source:0) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda3.run(Unknown Source:2) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:345) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowAnimator.animate(WindowAnimator.java:226) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowAnimator.lambda$new$1(WindowAnimator.java:106) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowAnimator.$r8$lambda$fo2Nk5bb9hY3lvmHsTnTEwtZMbI(Unknown Source:0) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.wm.WindowAnimator$$ExternalSyntheticLambda1.doFrame(Unknown Source:2) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.Choreographer.doCallbacks(Choreographer.java:899) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.Choreographer.doFrame(Choreographer.java:827) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.Handler.handleCallback(Handler.java:942) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.Handler.dispatchMessage(Handler.java:99) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.Looper.loopOnce(Looper.java:201) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.Looper.loop(Looper.java:288) 01-28 01:12:48.338 1703 1771 W WindowManager: at android.os.HandlerThread.run(HandlerThread.java:67) 01-28 01:12:48.338 1703 1771 W WindowManager: at com.android.server.ServiceThread.run(ServiceThread.java:44) 01-28 01:12:48.340 3488 3580 I AiAiEcho: Predicting[7]: { Feature:1, creation:2023-01-27T23:07:57.075Z, expiry:2023-01-28T00:00:00Z, isExpired: false}, { Feature:1, creation:2023-01-28T00:00:00Z, expiry:2023-01-28T01:00:00Z, isExpired: true}, { Feature:1, creation:2023-01-28T01:00:00Z, expiry:2023-01-28T02:00:00Z, isExpired: true}, { Feature:1, creation:2023-01-28T02:00:00Z, expiry:2023-01-28T03:00:00Z, isExpired: true}, { Feature:1, creation:2023-01-28T03:00:00Z, expiry:2023-01-28T04:00:00Z, isExpired: true}, { Feature:1, creation:2023-01-28T04:00:00Z, expiry:2023-01-28T05:00:00Z, isExpired: true}, { Feature:1, creation:2023-01-28T05:00:00Z, expiry:2023-01-28T05:07:57.075Z, isExpired: true} 01-28 01:12:48.340 3488 3580 I AiAiEcho: EchoTargets: Feature:1 01-28 01:12:48.340 3488 3580 I AiAiEcho: Filtered by AiAi flag check: 01-28 01:12:48.341 3488 3580 I AiAiEcho: Ranked targets strategy: WEIGHTED, count: 1, ranking metadata: { cardId: WEATHER-569377242, card type: 1, update time: 2023-01-27T23:07:57.075Z, expiration time: 2023-01-28T00:00:00Z, ranking metadata: RankingMetaData(urgency=0.99, priority=0.3, recency=1.0, rankScore=0.29700002, importantTimePoints=# nay@7bca4) } 01-28 01:12:48.341 3488 3580 I AiAiEcho: #weatherTwiddler: Weather removes SubtitleSupplementalItem in surface: lockscreen 01-28 01:12:48.342 3488 3580 I AiAiEcho: #postPredictionTargets: Sending updates to UISurface lockscreen with targets# 1 01-28 01:12:48.344 2109 2109 D SsBaseTemplateCard: No text view can be set up 01-28 01:12:48.344 2109 2109 D SsBaseTemplateCard: Passed-in item info is null 01-28 01:12:48.344 2109 2109 D SsBaseTemplateCard: Passed-in item info is null 01-28 01:12:48.344 2109 2109 I SsBaseTemplateCard: Secondary card pane is null 01-28 01:12:48.344 3742 3742 I GsaVoiceInteractionSrv: Handling ACTION_START_HOTWORD 01-28 01:12:48.345 3742 4251 I GsaVoiceInteractionSrv: (REDACTED) disregardVoiceMatch: %b 01-28 01:12:48.345 3742 4251 E GsaVoiceInteractionSrv: Cannot start hotword detection. 01-28 01:12:48.345 3488 3580 I AiAiEcho: #postPredictionTargets: Sending updates to UISurface home with targets# 1 01-28 01:12:48.345 3488 3580 I AiAiEcho: #postPredictionTargets: Sending updates to UISurface media_data_manager with targets# 0 01-28 01:12:48.347 6996 6996 I A : (REDACTED) Created gRPC endpoint for service %s 01-28 01:12:48.348 1703 2178 I DropBoxManagerService: add tag=platform_stats_bookmark isTagEnabled=true flags=0x2 01-28 01:12:48.351 1703 1780 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver 01-28 01:12:48.351 1703 1780 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver 01-28 01:12:48.351 1703 1771 W WindowManager: Exception thrown during dispatchAppVisibility Window{f885c6b u0 com.zcreations.anime_here/com.zcreations.anime_here.MainActivity EXITING} 01-28 01:12:48.351 1703 1771 W WindowManager: android.os.DeadObjectException 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.BinderProxy.transactNative(Native Method) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.BinderProxy.transact(BinderProxy.java:584) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:536) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3481) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1228) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:392) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:6725) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.ActivityRecord.onAnimationFinished(ActivityRecord.java:7537) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5416) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5375) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5379) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1147) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:292) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:970) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:834) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:777) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.Handler.handleCallback(Handler.java:942) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.Handler.dispatchMessage(Handler.java:99) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.Looper.loopOnce(Looper.java:201) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.Looper.loop(Looper.java:288) 01-28 01:12:48.351 1703 1771 W WindowManager: at android.os.HandlerThread.run(HandlerThread.java:67) 01-28 01:12:48.351 1703 1771 W WindowManager: at com.android.server.ServiceThread.run(ServiceThread.java:44) 01-28 01:12:48.351 1703 1771 I Process : Sending signal. PID: 13718 SIG: 9



**Additional context**
Add any other context about the problem here.
christocracy commented 1 year ago

WorkerWrapper: java.util.concurrent.CancellationException: Task was cancelled.

Your error does not come from this plugin.

abdelaziz-mahdy commented 1 year ago

WorkerWrapper: java.util.concurrent.CancellationException: Task was cancelled.

Your error does not come from this plugin.

ok will test again and let you know

christocracy commented 1 year ago

The errors you cause while executing your own code within the plug-in’s callback are not the plug-in’s responsibility.

abdelaziz-mahdy commented 1 year ago

The errors you cause while executing your own code within the plug-in’s callback are not the plug-in’s responsibility.

yes i know that, its just not my error :(

christocracy commented 1 year ago

Then you must seek support with the responsible package be.tramckrijte.workmanager.BackgroundWorker

abdelaziz-mahdy commented 1 year ago

the only reason i opened an issue here is this since it clearly mentions com.transistorsoft.flutter.backgroundfetch

D/AndroidRuntime(17620): Shutting down VM
E/AndroidRuntime(17620): FATAL EXCEPTION: main
E/AndroidRuntime(17620): Process: com.zcreations.anime_here, PID: 17620
E/AndroidRuntime(17620): java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.setMethodCallHandler(io.flutter.plugin.common.MethodChannel$MethodCallHandler)' on a null object reference
E/AndroidRuntime(17620):    at com.transistorsoft.flutter.backgroundfetch.BackgroundFetchModule.onDetachedFromEngine(BackgroundFetchModule.java:78)
E/AndroidRuntime(17620):    at com.transistorsoft.flutter.backgroundfetch.BackgroundFetchPlugin.onDetachedFromEngine(BackgroundFetchPlugin.java:37)
E/AndroidRuntime(17620):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove(FlutterEngineConnectionRegistry.java:270)
E/AndroidRuntime(17620):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove(FlutterEngineConnectionRegistry.java:280)
E/AndroidRuntime(17620):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.removeAll(FlutterEngineConnectionRegistry.java:288)
E/AndroidRuntime(17620):    at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.destroy(FlutterEngineConnectionRegistry.java:121)
E/AndroidRuntime(17620):    at io.flutter.embedding.engine.FlutterEngine.destroy(FlutterEngine.java:434)
E/AndroidRuntime(17620):    at be.tramckrijte.workmanager.BackgroundWorker.stopEngine$lambda$2(BackgroundWorker.kt:137)
E/AndroidRuntime(17620):    at be.tramckrijte.workmanager.BackgroundWorker.$r8$lambda$wXpuL4btjxJ1mHNjGdYisJ2RzbQ(Unknown Source:0)
E/AndroidRuntime(17620):    at be.tramckrijte.workmanager.BackgroundWorker$$ExternalSyntheticLambda1.run(Unknown Source:2)
E/AndroidRuntime(17620):    at android.os.Handler.handleCallback(Handler.java:942)
E/AndroidRuntime(17620):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(17620):    at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime(17620):    at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime(17620):    at android.app.ActivityThread.main(ActivityThread.java:7872)
E/AndroidRuntime(17620):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17620):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime(17620):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
I/WM-WorkerWrapper(17620): Worker result RETRY for Work [ id=5cf5502b-c14b-492d-93fd-408241806750, tags={ be.tramckrijte.workmanager.BackgroundWorker } ]
I/Process (17620): Sending signal. PID: 17620 SIG: 9
Lost connection to device.
christocracy commented 1 year ago

Ok, I didn’t notice that one.

try adding a null check before this call:

https://github.com/transistorsoft/flutter_background_fetch/blob/master/android/src/main/java/com/transistorsoft/flutter/backgroundfetch/BackgroundFetchModule.java#L78

abdelaziz-mahdy commented 1 year ago

Ok, I didn’t notice that one.

try adding a null check before this call:

https://github.com/transistorsoft/flutter_background_fetch/blob/master/android/src/main/java/com/transistorsoft/flutter/backgroundfetch/BackgroundFetchModule.java#L78

will try it and let you know

abdelaziz-mahdy commented 1 year ago

it worked, no more crashes ♥

i will open a pull request if you want to merge it

thank you♥

christocracy commented 1 year ago

Go ahead, please. I added that extra line in the Most recent commit, as a safety check.

christocracy commented 1 year ago

Released to 1.1.4.