停止 handler.postDelayed()

2023-12-10

我通过 new Handler().postDelayed(new Runnable()..... 调用多个处理程序 当我点击返回时如何停止它?

public class MyActivity extends AppCompatActivity implements OnClickListener {

    private Button btn;
    private Handler handler;
    private Runnable myRunnable;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        btn = (Button) findViewById(R.id.trainingsstart);
        btn.setOnClickListener(this);   
    }

    @Override
    public void onClick(View v) {
        Handler handler =  new Handler();
        Runnable myRunnable = new Runnable() {
            public void run() {
                // Things to be done
            }
        };

        handler.postDelayed(myRunnable, 3000);
    }

    @Override 
    public void onBackPressed() { 
        super.onBackPressed();
        handler.removeCallbacks(myRunnable);
    }   
}

我的问题是我的处理程序没有像“myHandler”这样的名称。我该如何处理?

感谢帮助!

现在我得到了这些错误:

03-28 17:47:03.662: E/AndroidRuntime(1961): FATAL EXCEPTION: main
03-28 17:47:03.662: E/AndroidRuntime(1961): java.lang.NullPointerException
03-28 17:47:03.662: E/AndroidRuntime(1961):     at de.basti12354.tage.uebungen.Tag1.onBackPressed(Tag1.java:120)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.app.Activity.onKeyUp(Activity.java:2159)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.KeyEvent.dispatch(KeyEvent.java:2647)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.app.Activity.dispatchKeyEvent(Activity.java:2389)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1860)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3791)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3774)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3516)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3666)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:1982)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1698)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1689)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1959)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.os.MessageQueue.nativePollOnce(Native Method)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.os.MessageQueue.next(MessageQueue.java:132)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.os.Looper.loop(Looper.java:124)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at java.lang.reflect.Method.invokeNative(Native Method)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at java.lang.reflect.Method.invoke(Method.java:525)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-28 17:47:03.662: E/AndroidRuntime(1961):     at dalvik.system.NativeStart.main(Native Method)

您可以使用:

 Handler handler = new Handler()
 handler.postDelayed(new Runnable())

或者您可以使用:

 handler.removeCallbacksAndMessages(null);

Docs

公共最终无效removeCallbacksAndMessages(对象令牌)

添加到 API 级别 1 删除任何待处理的回调帖子并发送 obj 为 token 的消息。如果 token 为 null,则所有回调和 消息将被删除。

或者你也可以这样做:

Handler handler =  new Handler()
Runnable myRunnable = new Runnable() {
public void run() {
    // do something
}
};
handler.postDelayed(myRunnable,zeit_dauer2);

Then:

handler.removeCallbacks(myRunnable);

Docs

公共最终无效removeCallbacks(Runnable r)

添加到 API 级别 1 删除 Runnable r 的任何待处理帖子 在消息队列中。

公共最终无效removeCallbacks(Runnable r,对象令牌)

Edit:

改变这个:

@Override
public void onClick(View v) {
    Handler handler =  new Handler();
    Runnable myRunnable = new Runnable() {

To:

@Override
public void onClick(View v) {
    handler = new Handler();
    myRunnable = new Runnable() { /* ... */}

因为你有以下内容。之前声明过onCreate但你重新声明然后初始化它onClick导致 NPE。

Handler handler; // declared before onCreate
Runnable myRunnable;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

停止 handler.postDelayed() 的相关文章

随机推荐

  • Java 查找数组中最小和第二小的值

    我正在尝试创建两种方法 一种方法用于查找对象数组中的最小值 另一种方法用于查找对象数组中的第二个最小值 我这样写了两个 public static BanffMarathonRunner getFastestTime BanffMarath
  • 找到两个嵌套列表的交集?

    我知道如何获得两个平面列表的交集 b1 1 2 3 4 5 9 11 15 b2 4 5 6 7 8 b3 val for val in b1 if val in b2 or def intersect a b return list se
  • jQuery UI DatePicker 仅显示月份年份

    我正在使用 jQuery 日期选择器在我的应用程序中显示日历 我想知道是否可以用它来显示月份和年份 2010 年 5 月 而不是日历 这是一个 hack 用整个 html 文件更新
  • MySQL 内连接帮助 - 想要包含不匹配的行

    我有几张表要加入查找 PET id owner id pet name size 1 1 Sparky L 2 1 Spot L 3 3 FooFoo M 4 3 Barky L 5 3 Jeb S OWNER id owner name
  • Haskell Posix 中的多行匹配

    我似乎找不到关于 haskell 的 POSIX 实现的像样文档 具体模块Text Regex Posix 谁能指出我在字符串上使用多行匹配的正确方向 好奇者的一个片段 gt extractToken body body
  • json 路径表达式在没有数组的情况下不起作用

    我正在尝试实现一个看似简单的 JSON 路径过滤器 但未能使其正常工作 想知道其他对 Json NET 的 JSON 路径实现有更多经验的人是否对后续步骤有想法 这种情况失败了 但我认为应该可行 var jsonText event dat
  • 字符串解析,提取数字和字母

    解析字符串并提取数字和字母的最简单方法是什么 我的字符串可以采用以下格式 数字 字母或字母 数字 即 10A B5 C10 1G 等 我需要提取两个部分 即 10A gt 10 和 A Update 感谢大家的精彩回答 最简单的方法可能是使
  • 将用户名和密码作为变量传递

    我希望在 feature 文件中使用变量而不是硬编码 UID 和密码 Background def xmlPayload read request xml def UserID UID def Password PWD def Token
  • 在oracle 11g中收缩数据库

    无论如何 我不是数据库管理员 所以我在这里陈述的一些内容可能是错误的 在 SQL Server 中 当我们在数据库中添加大量数据然后删除它时 数据文件 mdf 文件 或数据库 或任何名称 的大小不会减少到原始大小 我们需要缩小它 同样的基本
  • 需要sql查询中的范围计数[重复]

    这个问题在这里已经有答案了 我有问题详情 请访问http sqlfiddle com 3 8e018 1 我有一张成员表 上面有所有学生的分数 我正在尝试计算所有学生的数量 例如 0 9 学生人数 9 10 19 学生人数 0依此类推 直到
  • Hibernate spring 注释会话未关闭/刷新

    我 继承 了一个项目 该项目使用 Spring 注释来管理 Hibernate 的事务 会话 或者至少本来就是这样 目前 Hibernate 会话永远不会刷新 它们设置为 FLUSH MODE NEVER 并且 DAO 需要手动刷新才能将任
  • 自定义 WP 循环的正确 PHP 语法

    我正在尝试在我的 WordPress 网站中插入排序选项 我已经让它工作了 但需要帮助正确地将它与 WordPress 循环一起使用 目前 我有 在页面上 可以选择按字母顺序或时间顺序排序 a href sort date Newest a
  • 使用 Beautiful Soup 创建属性名为“name”的 new_tag

    我有一个 XML 块 需要将一些元素插入其中
  • Airflow 在成功后多次重新运行单个任务

    按顺序重新运行任务 A 3 次的最佳方法是什么 即任务A gt 任务A gt 任务A gt 任务B 我之所以这么问 是因为我将运行另一个单独的数据验证任务 B 该任务将比较这 3 次单独运行的数据 这就是我到目前为止所做的 dag DAG
  • 问题嵌套近似搜索算法

    我移植了一个近似搜索算法C to Python 逻辑和非常好的原始实现归因于to 然后 我编写了一个脚本来使用该算法来解决二维定位问题 到达时间差问题 二维解决方案效果很好 然而 当我嵌套到 3 维时 脚本不会产生预期的本地化 请注意 这几
  • 使用 RODBC 的参数化查询

    我在 R 中有一个变量 我想将其传递到数据库 我could use paste就像许多人在阅读 Google 结果时建议的那样 但由于 SQL 注入漏洞 这是不安全的 我更喜欢这样的东西 x lt 42 sqlQuery db SELECT
  • 如何捕获 NSString 中特殊指示的 **字符** 并粗体显示中间的内容?

    我无法将指定的 字符对之间的任何字符加粗 例如 在这个 NSString 中 The Fox has ran around the corner 应该读 狐狸跑了around角落 这是我的代码 NSString questionString
  • 在 R 中高效创建数字编码的虚拟变量?

    我们如何转换表单的数据 df lt structure list customer number c 3 3 1 1 3 item c milkshake burger apple burger water row names c NA 5
  • 导入错误:没有名为 py31compat 的模块

    我正在尝试使用安装 gensim sudo H pip install upgrade gensim 但它给了我这个错误 File setup py line 301 in
  • 停止 handler.postDelayed()

    我通过 new Handler postDelayed new Runnable 调用多个处理程序 当我点击返回时如何停止它 public class MyActivity extends AppCompatActivity impleme