Smartlocation可能存在内存泄漏

时间:2017-11-23 14:05:19

标签: android memory-leaks

我不确定,但我想我偶然发现了第三方库SmartLocation(https://github.com/mrmans0n/smart-location-lib)中的内存泄漏。以下是我用来重现泄漏的代码:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    MyApplication.refWatcher.watch(this)

    SmartLocation.with(this)
            .location()
            .config(LocationParams.NAVIGATION)
            .oneFix()
            .start {
                Timber.d("location: $it")
            }
}

override fun onDestroy() {
    super.onDestroy()

    SmartLocation.with(this)
            .location()
            .stop()
}

}

我使用的是最新版本的库:

compile 'io.nlopez.smartlocation:library:3.3.3'

将手机的方向改变5次后,我可以在内存分析器中看到我的5个活动实例:

内存分析器

enter image description here

以下是我在YourKit中看到的内容:

enter image description here

Leakcanary也会因为某些原因而无法显示任何内容,因此会因为某些原因而无法显示任何内容。

leakcanary

enter image description here

这里也是StrictMode日志:

E/StrictMode: class com.example.kirakishou.smartlocationmemleaktest.MainActivity; instances=4; limit=1
          android.os.StrictMode$InstanceCountViolation: class com.example.kirakishou.smartlocationmemleaktest.MainActivity; instances=4; limit=1
              at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)

0 个答案:

没有答案