Androidでタイマーを設定する方法 質問する

Androidでタイマーを設定する方法 質問する

タスク (UI を変更しない関数) を開始するために Android でタイマーを設定する適切な方法は何ですか? これを Java の方法を使用します。タイムスタンプ

それとも、Android (Android のハンドラー) にはもっと良い方法がありますか?

ベストアンサー1

はい、Javaのタイマーに使えるしかし、質問が求めているようにもっといい方法(モバイル用)。説明されているここ


StackOverflowのために:

以来タイマー新しいスレッドを作成すると、重いと見なされる場合があります。

アクティビティの実行中にコールバックを受け取るだけであれば、ハンドラと組み合わせて使用​​できます

実行可能:

private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
private Runnable runnable = new Runnable(){
    public void run() {
        Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
    }
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);

またはメッセージ

private final int EVENT1 = 1; 
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {         
        case Event1:
            Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
            break;
        
        default:
            Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
            break;
        }
    }
};

...

Message msg = handler.obtainMessage(EVENT1);
handler.sendMessageAtTime(msg, System.currentTimeMillis()+interval);
handler.sendMessageDelayed(msg, interval);

ちなみに、別のスレッドから UI スレッドでコードを実行する場合は、このアプローチを使用できます。

警告: Handlerのタイマー (または遅延を制御するもの) は、CPU がディープスリープ状態になると一時停止されますが、CPU がウェイクアップすると (一時停止された場所から) 継続されます。

アクティビティが実行されていない場合でもコールバックが必要な場合は、アラームマネージャー

おすすめ記事