特定の時間間隔で画面がタッチされなかった、または非アクティブのままだった場合、何かをしたい(関数を呼び出す)。Androidでこれを実現するにはどうすればよいですか?
助言がありますか。
onResume()
メソッド内のUIスレッドのハンドラーに遅延メッセージを送信できます。
handler.sendEmptyMessageDelayed(SCREEN_INACTIVE_MSG, DELAY_MILIS);
次に、onTouchEventでメッセージを削除し、再度挿入します。
handler.removeMessages(SCREEN_INACTIVE_MSG);
handler.sendEmptyMessageDelayed(SCREEN_INACTIVE_MSG, DELAY_MILIS);
ハンドラーで、メソッドをオーバーライドhandleMessage()
して、メッセージを処理します。
public void handleMessage (Message msg) {
switch(msg.what) {
case SCREEN_INACTIVE_MSG:
handleIdleScreenMetohd();
break;
}
}
また、のハンドラーからメッセージを削除しますonPause()
。
これは、アクティビティが常にアクティブである(一時停止されていないなど)ことを前提としています。アプリの外部で画面の非アクティブを処理することは不可能のようです。