相关疑难解决方法(0)

Android:AlertDialog导致内存泄漏

我的应用程序显示了AlertDialog一个ListView内部.一切都工作得很好然后我决定测试这个内存泄漏.运行应用程序一段时间后,我打开了MAT并生成了Leak Suspects报告.MAT发现了几个类似的泄漏:

"<system class loader>"加载的"com.android.internal.app.AlertController $ RecycleListView"的一个实例占用...

我花了很多时间寻找泄漏的原因.代码审查没有帮助我,我开始谷歌搜索.这就是我发现的:

问题5054:AlertDialog似乎通过MessageQueue中的Message导致内存泄漏

我决定检查这个bug是否重现.为此我创建了一个由两个活动组成的小程序.MainActivity是一个enrty点.它只包含一个运行的按钮LeakedActivity.后者只是AlertDialog在其onCreate()方法中显示了一个.这是代码:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        findViewById(R.id.button).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(
                    new Intent(MainActivity.this, LeakedActivity.class));
            }
        });
    }
}

public class LeakedActivity extends Activity {
    private static final int DIALOG_LEAK = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks android-alertdialog

14
推荐指数
1
解决办法
1万
查看次数