修复处理程序类中的内存泄漏

时间:2019-06-24 18:49:53

标签: android memory-leaks android-handler

我正在尝试使用Handler类修复内存泄漏,并且我正在使用blog中的参考代码,其中在自定义Handler类中使用了对活动的弱引用,而在handleMessage方法中使用了可运行代码。

private static class MyHandler1 extends Handler {
                private final WeakReference<MainActivity> mActivity;

                public MyHandler1(MainActivity) {
                    mActivity = new WeakReference<MainActivity>(activity);
                }

                @Override
                public void handleMessage(Message msg) {
                    ProgressActivity activity = mActivity.get();
                    if (activity != null) {
                      activity.textView.setText(activity.getString(R.string.text_handler_2));
                      Intent i = new Intent(activity.getApplicationContext(), NewActivity.class);

                       activity.getApplicationContext().startActivity(i);
                    }
                }
            } 

    static final Runnable sRunnable = new Runnable() {
            @Override
            public void run() {

            }
        };

当我在onCreate()方法中使用handler.postDelayed(sRunnable, 6000);时,handleMessage内的代码未执行。我的可运行代码是否应该在静态Runnable对象中,这样可以避免内存泄漏?另外,如果我有不同的处理程序对象执行不同的可运行对象代码,那么如何在单个Handler类中的handleMessage中管理它们?

0 个答案:

没有答案