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