ウェイクロックに問題があります。基本的に、タイマースレッドでwakelockを実行しました。これは、アプリの全期間中、AsyncTaskのdoInBackgroundです(これは、パフォーマンス測定を行うためのバックグラウンドアプリです)。それから、画面を10分ごとに1秒程度だけウェイクアップさせたいと思いました。そこで、AsyncTaskを拡張する別のクラスを作成し、以下のコードをそのdoInBackgroundに配置しましたが、画面がオンに戻りません。このスレッドと、onCreateのdoInBackgroundメソッドを使用してAsyncTaskである他の2つのスレッドを開始することに注意してください。
これがウェイクアップを行う私の新しい内部クラスです。基本的には、他の2つのバックグラウンドスレッドがブール値をtrueに設定するまで、電話画面を10分ごとに少しの間ウェイクアップするだけです。
private class WakeUp extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
do{
try {
Thread.sleep(WAKEUP_EVERY); //600000ms
} catch (InterruptedException e) {
e.printStackTrace();
}
wl.acquire();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
wl.release();
}while(!timeCompleted || !transferCompleted);
return null;
}
}