如何避免 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。
我有一个带有 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。