解决由于TimerTask LeakCanary导致的内存泄漏

时间:2019-07-17 16:29:14

标签: android memory-leaks timertask leakcanary

我正在尝试在使用Timer.scheduleAtFixedRate方法的自定义视图中实现路径效果。现在我正在使用静态重写的Handler类来避免scheduleAtFixedRate方法中的内存泄漏,但是当我尝试从视图中删除活动时,即使取消并清除了detachedFromWindow方法中的计时器实例,我仍然会由于计时器线程而导致内存泄漏。自定义视图。这可能是由于TimerTask类的匿名实例所致。请让我知道是否有此修复程序。来自泄漏金丝雀的日志如下enter image description here

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

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

        @Override
        public void dispatchMessage(Message msg) {

            MainActivity activity = mActivity.get();

            if(activity!=null) {
                // Doing my path effect work
                }
            }
        }
    }

final MyHandler handlerobj = new MyHandler((MainActivity) getContext());    


timer = new Timer();
     timer.scheduleAtFixedRate(new TimerTask() {
        handlerobj.sendEmptyMessage(0);
            }
        }, 0, 15);

0 个答案:

没有答案