gpt4 book ai didi

java - 可运行的问题

转载 作者:行者123 更新时间:2023-11-29 06:18:55 25 4
gpt4 key购买 nike

有人建议我使用这段代码让我的方法在一定时间后执行,我对其进行了一些修改,现在我有:

private Handler mHandler = new Handler();
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
final long start = mStartTime;

// Get the difference in ms
long millis = SystemClock.uptimeMillis() - start;

// Format to hours/minutes/seconds
int mTimeInSec = (int) (millis / 1000);

// Do your thing

Location location = tracker.getLastKnownLocation(best);
RetrieveAvgPower(location);

// Update at the next second
mHandler.postAtTime(this, 1000);//start + ((mTimeInSec + 10) * 1000));
}
};

我尝试通过以下方式启动和停止它:

public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
mStartTime = System.currentTimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 1000);
break;
case R.id.stop:
mHandler.removeCallbacks(mUpdateTimeTask);
break;}}

但是,有一个问题。首先,我的方法设置文本并将一行写入日志文件,但如果我使用上面的代码,文本不会被设置,但是所有信息都会自动写入日志文件。另一件事是我无法停止运行 - 在它开始执行程序后,如果我尝试按下停止按钮,程序似乎没有响应并崩溃。我做错了什么以及如何解决?

最佳答案

run() 的最后一行不应该调用 Handler.postDelayed() 而不是 Handler.postAtTime() 吗?

根据事件队列在 Android 中的实现方式,您可能会通过使用错误的线程来终止线程...您基本上是在线程最初启动后 1 秒重复设置 Runnable 以运行,因此没有其他事件得到运行。

关于java - 可运行的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996133/

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