标签: leakcanary

Leak Canary 使用 ViewPager2 检测 TabLayout 的内存泄漏

我按照官方文档设置了一个带有 ViewPager2 的 TabLayout。我以这种方式使用 TabLayoutMediator 将 TabLayout 与 ViewPager2 连接起来:

TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
        tab.setIcon(getTabIcon(position))
        tab.text = getTabTitle(position)
    }.attach()
Run Code Online (Sandbox Code Playgroud)

但是 Leak Canary 检测到似乎与 TabLayout 和 TabLayoutMediator 相关的内存泄漏。日志如下:

2020-05-13 17:57:32.914 D/LeakCanary: ????
2020-05-13 17:57:32.914 D/LeakCanary: ? GC Root: Local variable in native code
2020-05-13 17:57:32.914 D/LeakCanary: ?
2020-05-13 17:57:32.914 D/LeakCanary: ?? android.net.ConnectivityThread instance
2020-05-13 17:57:32.914 D/LeakCanary: ?    Leaking: NO (PathClassLoader? is not leaking)
2020-05-13 17:57:32.914 D/LeakCanary: ?    Thread name: 'ConnectivityThread'
2020-05-13 17:57:32.914 D/LeakCanary: ?    ? ConnectivityThread.contextClassLoader
2020-05-13 17:57:32.914 D/LeakCanary: …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks leakcanary android-tablayout

10
推荐指数
3
解决办法
2467
查看次数

textview上的Android内存泄漏 - LeakCanary(可以忽略泄漏)

当我从启动画面转到主要活动时,LeakCanary会显示以下内存泄漏.我知道这是由于Android操作系统本身的故障导致的预期泄漏,但有没有办法可以避免这种情况(通过在某处设置某些TextView的细节?)

D/LeakCanary? * LEAK CAN BE IGNORED.
D/LeakCanary? * com.gmspartnersltd.earthmiles.views.ActivitySignUp_ has leaked:
D/LeakCanary? * GC ROOT static android.text.TextLine.sCached
D/LeakCanary? * references array android.text.TextLine[].[1]
D/LeakCanary? * references android.text.TextLine.mCharacterStyleSpanSet
D/LeakCanary? * references android.text.SpanSet.spans
D/LeakCanary? * references array android.text.style.CharacterStyle[].[1]
D/LeakCanary? * references com.gmspartnersltd.earthmiles.views.ActivitySignUp$2.this$0 (anonymous class extends android.text.style.ClickableSpan)
D/LeakCanary? * leaks com.gmspartnersltd.earthmiles.views.ActivitySignUp_ instance
D/LeakCanary? [ 05-22 08:54:52.160 13969:18091 D/LeakCanary ]
    * Reference Key: bb8124a9-2829-4ff3-8ded-13cf35f80f54
D/LeakCanary? * Device: Genymotion generic Google Nexus 5 - 5.0.0 - API 21 - 1080x1920 vbox86p
D/LeakCanary? * Android Version: …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks ddms android-memory leakcanary

9
推荐指数
1
解决办法
4488
查看次数

LeakCanary通过匿名实现locationlistener报告泄露的活动实例

在onDestroy中

locationManager.removeUpdates(locationListener);
locationListener = null;
Run Code Online (Sandbox Code Playgroud)

匿名实现

locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
        if (locationManager != null) {
            locationListener = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    if (chatId != null) {
                        double radius = 6378.137;
                        double oldLat = mLastLocation.getLatitude();
                        double oldLng = mLastLocation.getLongitude();
                        double newLat = location.getLatitude();
                        double newLng = location.getLongitude();
                        double dLat = Math.toRadians(newLat - oldLat);
                        double dLng = Math.toRadians(newLng - oldLng);
                        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                                + Math.cos(Math.toRadians(oldLat))
                                * Math.cos(Math.toRadians(newLat)) * Math.sin(dLng / …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks anonymous-inner-class leakcanary

9
推荐指数
1
解决办法
773
查看次数

我的泄漏工作了吗?怎么知道?

我相信已经成功安装了LeakCanary.

我将调试,发布和测试依赖项添加到build.gradle文件中.

我将必要的文件添加到我的Application Class中.必要时进口.确认应用程序类已正确添加到清单中.我的应用程序类是否需要显式调用?

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
Run Code Online (Sandbox Code Playgroud)

我在模拟器上运行我的应用程序,看不到任何不同.我监控Android监视器并没有看到任何区别.我怎么知道它是否全部有效?我已经分享了我的Application类.

import android.app.Application;
import android.content.res.Configuration;
import com.squareup.leakcanary.LeakCanary;

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();

    if (LeakCanary.isInAnalyzerProcess(this)) {
        return;
    }
    LeakCanary.install(this);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

@Override
public void onLowMemory() {
    super.onLowMemory();
}
Run Code Online (Sandbox Code Playgroud)

}

android memory-leaks leakcanary

9
推荐指数
1
解决办法
2797
查看次数

如何使用leakcanary,如何添加leakcan作为jar来构建一个带有.mk文件的apk

LeakCanary是一个用于Android和Java的内存泄漏检测库. LeakCanary

我的项目基于android make文件系统,它依赖于一些android内部接口和自定义方法.

如何将LeakCanary作为lib添加到我的应用程序中以检测内存泄漏.

我的解决方案:首先,我必须将LeakCanary构建为jar文件,但是如何.因为它是一个gradle目录结构,我之前从未使用过Gradle.

任何提示都很珍贵.

android leakcanary

8
推荐指数
3
解决办法
8631
查看次数

DisplayLeakActivity不存在

有一段时间我有LeakCanary的问题(​​我认为自Android Studio 2.2以来,但不确定)

我添加了这个依赖项

 dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
   testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
 }
Run Code Online (Sandbox Code Playgroud)

当我点击Android Studio中的播放按钮时,我收到以下错误消息:

$ adb shell am start -n "com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Error while executing: am start -n "com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity }
Error type 3
Error: Activity class {com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity} does not exist.

Error while Launching activity
Run Code Online (Sandbox Code Playgroud)

但是当我用ClassyShark打开apk文件时,我可以看到活动就在那里.

在此输入图像描述

什么出错了?

android android-studio leakcanary android-studio-2.2

8
推荐指数
1
解决办法
1118
查看次数

VideoView泄漏活动

我正在使用以下代码在应用中显示视频VideoActivity:

binding.videoView.setVideoURI(videoUri);
binding.videoView.requestFocus();
binding.videoView.start();

binding.videoView.setOnPreparedListener(new 
    MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {      
           binding.progressBar.progressOverlay.setVisibility(View.GONE);
    }
});

binding.videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
        binding.videoView.suspend();
        binding.videoView.stopPlayback();
        setResult(RESULT_OK);
        finish();
    }
});

binding.videoSkipButton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    binding.videoView.suspend();
                    binding.videoView.stopPlayback();
                    setResult(RESULT_OK);
                    finish();
                }
            });
Run Code Online (Sandbox Code Playgroud)

在跳过/结束后,我从泄漏金丝雀那里得到一份报告我的活动: 在此输入图像描述

如何消除这种泄漏?

我也看到过类似泄漏跟踪的问题:VideoView内存泄漏

但问题在于ButterKnife解除绑定.我需要做类似的事DataBinding吗?

android memory-leaks leakcanary

8
推荐指数
1
解决办法
600
查看次数

LeakCanary 收到 Fragment#onDestroy() 回调并且 Fragment#mFragmentManager 为空

我正在尝试使用 LeakCanary 修复内存泄漏,老实说,我无法理解向我展示的堆栈跟踪。我正在使用 firebase 分页选项并停止监听该onDestroy方法。我也没有将任何活动或上下文传递给适配器,所以我确信这没有问题。以下是来自 LeakCanary 的日志。

    HEAP ANALYSIS RESULT
    ====================================
    1 APPLICATION LEAKS
    
    References underlined with "~~~" are likely causes.
    Learn more at https://squ.re/leaks.
    
    31417285 bytes retained by leaking objects
    Signature: 31c372d2f2d3d219e828763d8f853ceca5851b
    ????
    ? GC Root: System class
    ?
    ?? leakcanary.internal.InternalLeakCanary class
    ?    Leaking: NO (HomeBuyersActivity? is not leaking and a class is never leaking)
    ?    ? static InternalLeakCanary.resumedActivity
    ?? com.dreamakers.coonna.Activity.HomeBuyersActivity instance
    ?    Leaking: NO (Activity#mDestroyed is false)
    ?    ? HomeBuyersActivity.mLifecycleRegistry
    ?                         ~~~~~~~~~~~~~~~~~~
    ?? androidx.lifecycle.LifecycleRegistry instance
    ? …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks leakcanary

8
推荐指数
1
解决办法
3816
查看次数

由于外部库中的 org.junit.Test 类依赖项,无法使用 LeakCanary

我正在尝试使用 LeakCanary 来查找 Android 应用程序中的内存泄漏。我正在使用 Android Studio。

当我开始调试我的应用程序时,我看到“LeakCanary 当前已禁用:在类路径中找到了测试类 org.junit.Test”。信息。

“org.junit.test”类来自外部库。

如何强制启用 LeakCanary?

java android leakcanary

8
推荐指数
1
解决办法
3784
查看次数

SharedElement和自定义EnterTransition导致内存泄漏

拥有共享元素动画以及自定义输入动画会导致活动泄漏.

知道可能是什么原因?

09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * com.feeln.android.activity.MovieDetailActivity has leaked: 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * GC ROOT android.app.ActivityThread$ApplicationThread.this$0 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.app.ActivityThread.mActivities 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.util.ArrayMap.mArray 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references array java.lang.Object[].[1] 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.app.ActivityThread$ActivityClientRecord.activity 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references com.feeln.android.activity.MovieDetailActivity.mActivityTransitionState 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.app.ActivityTransitionState.mEnterTransitionCoordinator 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.app.EnterTransitionCoordinator.mEnterViewsTransition 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * references android.transition.TransitionSet.mParent 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary? * …

android memory-leaks android-memory leakcanary

7
推荐指数
2
解决办法
2600
查看次数