だから私は「あなたに言ってない」でアプリを作っています... :-)
問題に行く:
final ToggleButton passTog = (ToggleButton) findViewById(R.id.onoff);
passTog.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
init = System.currentTimeMillis();
handler.post(updater);
}
});
上記は通常のトグル ボタンです。以前にハンドラーを定義しました。これを使用して、Runnable という名前のアップデーターを実行しています... (以下では、「表示」はテキストビューです)
final Runnable updater = new Runnable() {
@Override
public void run() {
if (passTog.isChecked()) {
now = System.currentTimeMillis();
time = now - init;
display.setText(time + " ms");
handler.postDelayed(this, 30);
}
}
};
そして、これがランナブルです... 変数 time, now, init ... は時間変数です。
私がやろうとしているのは(今)トグルボタンが押されてから経過したミリ秒でテキストビューを更新していることです(ifステートメントを参照してください)
上記コードの説明
アクティビティが開始され、トグル ボタンをクリックすると、init 変数が現在の時刻の値を取得します... プログラムはランナブルに移行します。さて、ボタンが実際に「オン」の状態であることを再確認した後...システムは現在の時間を「今」に置きます...そして、2つの減算として時間変数があります。そして、それはテキストビューの「表示」で30ミリ秒ごとに更新されます。アプリでは、時間が経過するにつれてテキストビューのペーシングを確認できます。よく働く。
それはそれで、私が欲しいのは...
アクティビティが開始されたら、ボタンを押します .2 秒から 10 秒の間のランダムな時間遅延*の後..その後、テキストビューの更新が開始されます。
ボタンを押しても、何も起こらないように見えます。その後、ランダムな遅延が発生します...テキストビューがバーストし、1 ミリ秒から現在の時刻を大量に生成し始めます。つまり、上記のランナブルはランダムな時間遅延の後に実行する必要があります。
問題のように見ることは完全に論理的であり、実際には技術的ではありません-ランナブルが機能する前に、何らかの方法で固定されていない時間遅延を導入する必要があります。
ランナブル自体でこれを行うことができると思います...すでに「時間」変数があります....「if」ステートメントでそれを使用しないでください....そして時間変数をリセットして最初から始まるようです。
重いもの、私はそれを正しく理解できないようです。
これを行う方法はありますか?