●画面を消してもタイマーを動かし続ける
アプリを動かしている状態で電源ボタンを押して画面を消しても、また時間が経って自動的に画面が消えたとしても、
プログラム中のタイマーなどは生かしておきたい。
そんな時があると思います。
例えば、 onPause() での終了処理でタイマーを殺さずにいると、電源ボタンを押して画面を消してもタイマーは生きてますが、
戻るボタンやホームボタンを押すとプログラムが残念な結果になります。
こんな感じに。
といって、 onDestroy() の中でタイマーを殺そうとしても先にプロセスが殺されて残念な事になります。
そこで、終了時に必ず通る onPause() の中で画面の状態を調べて画面が明るい場合には終了処理を、
画面が暗い場合は電源ボタンを押されたと判断して、そのままタイマーを続行するようにしました。
また、起動時に必ず通る onResume() ではタイマーが複数登録されるのを防ぐようにしておきます。
private java.util.Timer timer = null;
private java.util.TimerTask timertask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
if(null == timer){
timertask =new java.util.TimerTask(){
@Override
public void run() {
}
};
//タイマーの起動
timer=new java.util.Timer(true);
timer.schedule(timertask,(long)1000,(long)500);
}
}
@Override
protected void onPause() {
super.onPause();
android.content.Context context=getApplicationContext();
android.os.PowerManager pm = (android.os.PowerManager) getSystemService(context.POWER_SERVICE);
if(pm.isScreenOn()){
//画面がONの場合はホームボタンや戻るボタンなどで終了した。
timer.cancel();
timer.purge();
timer=null;
}
}
このようにすることにより、プログラム実行中に画面の電源を落としてもタイマーが動き続けます。
たぶんですけどね。
▲トップページ
>
android