gpt4 book ai didi

android - 从另一个未创建它的 Activity 中取消 handler.postdelayed

转载 作者:行者123 更新时间:2023-11-29 21:33:27 25 4
gpt4 key购买 nike

注意错别字,只是一个模型。

class myActivity1 extends Activity
{
oncreate()
{
Handler myHandler = new Handler();
myHandler.postDelayed(myRunnable,1000)
}

onPause()
{
}
}

处理程序执行其工作,1 秒后 myRunnable 运行。假设我在 myRunnable 中调用另一个 postDelayed,它会重新启动 postDelayed 以进行重复。

在 myActivity1 中,我没有使用 removeCallbacks() 函数,因此即使我离开 Activity ,myHandler 也会运行。

但是,我的问题是,如何从我移动到的另一个 Activity 中取消 myHandler? (假设我的应用程序有 15 个 Activite,而我不知道我在哪个 Activite 中。)

最佳答案

创建一个 Singelton 类:-

public class MyHandler {
private static Handler handler;

public static Handler getHandler() {
if (handler == null) {
initHandler();
}
return handler;
}

private static void initHandler() {
handler = new Handler();
handler.postDelayed(myRunnable,1000);
}

public static void stopMyHandler() {
handler.removeCallbacksAndMessages(null);
}

public static void pauseMyHandler(Runnable myRunnable) {
handler.removeCallbacksAndMessages(myRunnable);
}

public static void resumeMyHandler(Runnable myRunnable) {
handler.postDelayed(myRunnable,1000);
}
}

使用 MyHandler.getHandler() 运行它,使用 MyHandler.stopMyHandler() 在任何 Activity 中停止它。

在您的 Activity 类中:-

    @Override
public void onPause()
{
super.onPause();
MyHandler.pauseMyHandler(myRunnable);
}

@Override
public void onResume()
{
super.onResume();
MyHandler.resumeMyHandler(myRunnable);
}

在 UI 线程上运行的 Runnable 代码:-

    runOnUiThread(new Runnable() {

@Override
public void run() {
//update your UI
}
});

关于android - 从另一个未创建它的 Activity 中取消 handler.postdelayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com