如何避免 RecyclerView ViewHolder 中的内存泄漏?

How to avoid memory leaks in RecyclerView ViewHolder?

我有一个带有 header 和 ViewPager 的 RecyclerView。由于无法使 ViewPager 自动翻转视图,因此我在 ViewHolder 中添加了一个可运行的对象来执行此操作。因此,runnable 保持 运行 即使另一个 Activity 打开并且没有办法停止它。可运行的唯一时刻是所有应用程序关闭时。

现在,我有一个 runnable,它会造成内存泄漏并一直运行,即使在其他 Activity 打开时也是如此。我已经检查了 Logcat,似乎只有在 Activity 被销毁后,runnable 才不再运行。

handler.postDelayed(this, delay);

无法调用:

handler.removeCallbacks(runnable);

有没有办法停止 runnable/any 另一种翻转 ViewPager 的方法?

例如...

如果您在 RecyclerView 中使用 ViewPager,那么您应该创建类似

的方法
public static void stopHandler(){
   handler.removeCallbacks(runnable);
}

public static void resumeHandler(){
   handler.postDelayed(runnable,DELAY_MS);
}

并在 onPause/onDestroy 中调用 stopHandler 并在 onResume 方法中调用 resumeHandler。