【问题标题】:A loop action every 15 seconds it starts ok but lately it runs every second每 15 秒执行一次循环动作,它开始正常,但最近它每秒运行一次
【发布时间】:2022-01-13 15:24:41
【问题描述】:

我的 MainActivity.java 中有一个循环:

public class MainActivity <...> {
    Handler handler = new Handler();
    Runnable runnable;
    int delay = 15000;
}

@Override
public void onResume() {
    //super.onResume();

    handler.postDelayed(runnable = new Runnable() {
        public void run() {
            handler.postDelayed(runnable, delay);
            Log.d("myTag", "This is my message");
        }
    }, delay);
    super.onResume();

}

如前所述,一开始,动作每 15 秒运行一次(不准确,有时是 13 秒,有时是 16 秒,等等,但随着它继续运行)在某个时刻开始每秒运行一次:

最后条目的Logcat:

2021-12-08 18:06:35.329 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:38.135 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:39.318 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:39.667 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:48.967 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:50.330 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:53.138 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:54.320 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:06:54.669 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:07:03.968 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:07:05.332 25533-25533/com.app.xxxx D/myTag: This is my message
2021-12-08 18:07:08.140 25533-25533/com.app.xxxx D/myTag: This is my message

有什么想法吗?为什么会这样?

【问题讨论】:

  • onResume() 可能会被多次调用,一旦你有 15 个运行,你就会得到大约每秒一次的命中。
  • 嗨@JayC667,是的,我又找到了一个 onResume();这就是导致问题的原因。您能否添加您的评论作为标记它的答案?谢谢。
  • 大卫的回答更好,更详细。简单地用分数打他;-)

标签: java android android-studio android-activity


【解决方案1】:

正如@JayC667 所说,您每次调用onResume() 时都会发布此消息。因此,您将拥有此运行的多个副本。为防止这种情况发生,您可以在 onCreate() 中发布您的 Runnable,或者确保删除在 onPause() 中发布的所有 Runnable

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多