如何从适配器中删除处理程序
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 ();
}
随心所欲。希望你明白
我在适配器中使用一个函数,我添加了一个处理程序来每 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 ();
}
随心所欲。希望你明白