そのハンドラーにメッセージを送信するタイマーが必要です。Runnable を実装するクラスを作成し、そのオブジェクトをスレッドの実行可能なコンストラクターにフィードします。スレッドを開始すると、アプリケーションがハングし、明らかに非同期で動作していません。AsyncTask を使用することもできましたが、短期間の操作用に設計されていると聞いたことがありますが、バックグラウンド タイマーはアクティビティの onResumed 状態全体で動作する必要があります。私の間違いを指摘して、Android のスレッドに関する有用なリンクを提供していただけませんか。ありがとう。
ここに私が書いたコードがあります:
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
_myTimerInstance = new MyTimer(new Handler() {
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
// ...
}
});
_myThread = new Thread(_myTimerInstance);
_myThread.run();
}
private static class MyTimer implements Runnable {
private Handler _myHandler;
private boolean _activityHasBeenLeft;
public MyTimer(Handler myHandler) {
_myHandler = myHandler;
}
public void setActivityHasBeenLeft(boolean b) {
_activityHasBeenLeft = b;
}
@Override
public void run() {
while (!_activityHasBeenLeft) {
try {
Thread.sleep(2000);
_myHandler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}