-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Closed
Labels
impact: customerA bug with low impact (e.g. affecting only a few customers or has a workaround). (P3)A bug with low impact (e.g. affecting only a few customers or has a workaround). (P3)platform: androidIssues / PRs which are specifically for Android.Issues / PRs which are specifically for Android.plugin: messagingtype: bugSomething isn't workingSomething isn't working
Description
Currently, the background handling in FlutterFirebaseMessagingService is leaking the backgroundChannel property. This get's evident by activating LeakCanary and moving the App from FG to BG:
D ┬
D ├─ android.net.ConnectivityThread
D │ Leaking: NO (PathClassLoader↓ is not leaking)
D │ Thread name: 'ConnectivityThread'
D │ GC Root: Thread object
D │ ↓ thread ConnectivityThread.contextClassLoader
D ├─ dalvik.system.PathClassLoader
D │ Leaking: NO (Object[]↓ is not leaking and A ClassLoader is never leaking)
D │ ↓ PathClassLoader.runtimeInternalObjects
D ├─ java.lang.Object[]
D │ Leaking: NO (FlutterFirebaseMessagingService↓ is not leaking)
D │ ↓ array Object[].[1679]
D ├─ io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
D │ Leaking: NO (a class is never leaking)
D │ ↓ static FlutterFirebaseMessagingService.backgroundChannel
D │ ~~~~~~~~~~~~~~~~~
D ├─ io.flutter.plugin.common.MethodChannel
D │ Leaking: UNKNOWN
D │ ↓ MethodChannel.messenger
D │ ~~~~~~~~~
D ├─ io.flutter.view.FlutterNativeView
D │ Leaking: UNKNOWN
D │ ↓ FlutterNativeView.mPluginRegistry
D │ ~~~~~~~~~~~~~~~
D ├─ io.flutter.app.FlutterPluginRegistry
D │ Leaking: UNKNOWN
D │ ↓ FlutterPluginRegistry.mActivity
D │ ~~~~~~~~~
D ╰→ com.company.app.MainActivity
D Leaking: YES (Activity#mDestroyed is true and ObjectWatcher was watching this)
D key = 1fd3d04b-7f8d-4bbf-99ae-440d0fb8146c
D watchDurationMillis = 5307
D retainedDurationMillis = 306
D , retainedHeapByteSize=160758)], libraryLeaks=[])
Expected behavior
No memory leaks.
Additional context
As @kroikie put it in the comments within service class, the isolate/instance stuff must not be static.
Metadata
Metadata
Assignees
Labels
impact: customerA bug with low impact (e.g. affecting only a few customers or has a workaround). (P3)A bug with low impact (e.g. affecting only a few customers or has a workaround). (P3)platform: androidIssues / PRs which are specifically for Android.Issues / PRs which are specifically for Android.plugin: messagingtype: bugSomething isn't workingSomething isn't working