このコードを使用して、一定期間後にメソッドを実行するようにアドバイスされました。少し変更したところ、次のようになりました。
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;}}
ただし、問題があります。まず、私のメソッドはテキストを設定し、ログ ファイルに行を書き込みますが、上記のコードを使用すると、テキストは設定されませんが、すべての情報がログ ファイルに自動的に書き込まれます。もう1つのことは、ランナブルを停止できないことです-実行を開始した後、プログラムが応答していないようで、停止ボタンを押そうとするとクラッシュします。私は何が間違っていて、どうすれば解決できますか?