有人建议我使用此代码使我的方法在一段时间后执行,我对其进行了一些修改,现在我有了:
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;}}
但是,有一个问题。首先,我的方法设置文本并将一行写入日志文件,但是如果我使用上面的代码,则不会设置文本,但是所有信息都会自动写入日志文件。另一件事是我无法停止可运行 - 在它开始执行程序后,如果我尝试按下停止按钮,它似乎没有响应并崩溃。我做错了什么以及如何解决?