绑定服务泄漏内存

绑定服务泄漏内存,第1张

概述我写了一个基本的bound service based on the Android documentation,但LeakCanary告诉我该服务正在泄漏.>是否有泄漏或我是否配置了LeakCanary?>如何编写不会泄漏的绑定服务?编码class LocalService : Service() { private val binder

我写了一个基本的bound service based on the Android documentation,但LeakCanary告诉我该服务正在泄漏.

>是否有泄漏或我是否配置了LeakCanary?
>如何编写不会泄漏的绑定服务?

编码

class LocalService : Service() {  private val binder = LocalBinder()  private val generator = Random()  val randomNumber: Int    get() = generator.nextInt(100)  inner class LocalBinder : Binder() {    fun getService(): LocalService = this@LocalService  }  overrIDe fun onBind(intent: Intent): IBinder {    return binder  }  overrIDe fun onDestroy() {    super.onDestroy()    LeakSentry.refWatcher.watch(this) // Only modification is to add LeakCanary  }}

如果我通过以下方式从活动绑定到该服务,则LeakCanary检测到该服务已泄漏

class MainActivity: Activity() {  private var service: LocalService? = null  private val serviceConnection = object: ServiceConnection {    overrIDe fun onServiceConnected(name: Componentname?,binder: IBinder?) {      service = (binder as LocalBinder).getService()    }    overrIDe fun onServicedisconnected(name: Componentname?) {      service = null    }  }  overrIDe fun onStart() {    super.onStart()    bindService(Intent(this,LocalService::class.java),serviceConnection,BIND_auto_CREATE)  }   overrIDe fun onStop() {    super.onStop()    service?.let {      unbindService(serviceConnection)      service = null    }  }}
┬├─ com.example.serviceleak.LocalService$LocalBinder│    Leaking: NO (it's a GC root)│    ↓ LocalService$LocalBinder.this│                               ~~~~~~╰→ com.example.serviceleak.LocalService​     Leaking: YES (RefWatcher was watching this)
最佳答案我不知道答案是否晚了,但是在阅读了您的问题之后,我还在项目中设置了leakCanary,并发现了此泄漏.我确信这是因为内部的绑定器类持有此处服务的外部类的引用.这就是为什么在泄漏日志中显示LocationService正在泄漏的原因.
我通过@commonsguy here找到了一个解决方案,并通过一个更简单的示例here实施了该解决方案.希望这会有所帮助.继续编码,加油. 总结

以上是内存溢出为你收集整理的绑定服务泄漏内存 全部内容,希望文章能够帮你解决绑定服务泄漏内存 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存