如何解决androidx.media.mediabrowserservicecompat上的泄漏?

发布于 2025-01-22 15:07:34 字数 1777 浏览 0 评论 0原文

泄漏是:

19583-19583/com.example D/LeakCanary: ​
┬───
│ GC Root: Global variable in native code
│
├─ android.service.media.MediaBrowserService$ServiceBinder instance
│    Leaking: UNKNOWN
│    Retaining 1.3 kB in 12 objects
│    this$0 instance of androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi26$MediaBrowserServiceApi26
│    ↓ MediaBrowserService$ServiceBinder.this$0
│                                        ~~~~~~
├─ androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi26$MediaBrowserServiceApi26 instance
│    Leaking: YES (Service not held by ActivityThread)
│    Retaining 798 B in 11 objects
│    mBase instance of com.example.service.music.MusicService
│    ↓ ContextWrapper.mBase
╰→ com.example.service.music.MusicService instance
​     Leaking: YES (ObjectWatcher was watching this because com.example.service.music.MusicService
​     received Service#onDestroy() callback and Service not held by ActivityThread)
​     Retaining 96.2 kB in 203 objects
​     key = e494c672-220e-4906-a94c-934ab7b33259
​     watchDurationMillis = 5302
​     retainedDurationMillis = 281
​     mApplication instance of com.example.MyApplication
​     mBase instance of android.app.ContextImpl

METADATA

Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: Google
LeakCanary version: 2.8.1
App process name: com.example
Stats: LruCache[maxSize=3000,hits=48809,misses=129505,hitRate=27%]
RandomAccess[bytes=6034785,reads=129505,travel=66210665221,range=26249675,size=34651913]
Analysis duration: 5090 ms

[更新]:

这是指向演示项目的链接,带有错误: https://github.com/kolyall/mediabrowserserviceleak (在释放app-debug.apk中)

Leak is :

19583-19583/com.example D/LeakCanary: ​
┬───
│ GC Root: Global variable in native code
│
├─ android.service.media.MediaBrowserService$ServiceBinder instance
│    Leaking: UNKNOWN
│    Retaining 1.3 kB in 12 objects
│    this$0 instance of androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi26$MediaBrowserServiceApi26
│    ↓ MediaBrowserService$ServiceBinder.this$0
│                                        ~~~~~~
├─ androidx.media.MediaBrowserServiceCompat$MediaBrowserServiceImplApi26$MediaBrowserServiceApi26 instance
│    Leaking: YES (Service not held by ActivityThread)
│    Retaining 798 B in 11 objects
│    mBase instance of com.example.service.music.MusicService
│    ↓ ContextWrapper.mBase
╰→ com.example.service.music.MusicService instance
​     Leaking: YES (ObjectWatcher was watching this because com.example.service.music.MusicService
​     received Service#onDestroy() callback and Service not held by ActivityThread)
​     Retaining 96.2 kB in 203 objects
​     key = e494c672-220e-4906-a94c-934ab7b33259
​     watchDurationMillis = 5302
​     retainedDurationMillis = 281
​     mApplication instance of com.example.MyApplication
​     mBase instance of android.app.ContextImpl

METADATA

Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: Google
LeakCanary version: 2.8.1
App process name: com.example
Stats: LruCache[maxSize=3000,hits=48809,misses=129505,hitRate=27%]
RandomAccess[bytes=6034785,reads=129505,travel=66210665221,range=26249675,size=34651913]
Analysis duration: 5090 ms

[UPDATE]:

Here is link to demo project with the error:
https://github.com/Kolyall/MediaBrowserServiceLeak
(in releases app-debug.apk)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文