如何从适配器中删除处理程序

How to remove Handler from adapter

我在适配器中使用一个函数,我添加了一个处理程序来每 2 秒刷新一次,如下所示:

 final Handler refreshHandler = new Handler();
 Runnable runnable = new Runnable() {
     @Override
     public void run() {
         refreshHandler.postDelayed(this, 2000);
         myfunction();
     }
 };
 refreshHandler.postDelayed(runnable, 2000);

当我不进入部署适配器的片段时,处理程序总是重新加载。

所以我的问题是,每次退出片段时如何停止处理程序?

我认为你应该使用 removeCallbacks(Runnable r) 方法。

这就是您将其放入代码中的方式:

      final Handler refreshHandler = new Handler();
 Runnable runnable = new Runnable() {
     @Override
     public void run() {
         refreshHandler.postDelayed(this, 2000);
         myfunction();
     }
 };
 refreshHandler.postDelayed(runnable, 2000);


@Override
public void onDestroy () {

    refreshHandler.removeCallback(runnable);
    super.onDestroy ();

}

随心所欲。希望你明白