Ich habe meinen Timer wie folgt eingestellt.
Timer t;
TimerTask task;
t = new Timer();
t.schedule(task, 10000);
task = new TimerTask() {
@Override
public void run() {
finish();
try {
t.cancel();
t = null;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
};
Alles funktioniert jetzt gut. Mein Problem beginnt, wenn Android-Gerät gesperrt wird. Der Timer wird fortgesetzt, wenn das Gerät gesperrt ist. Ich möchte meinen Timer pausieren, wenn das Gerät gesperrt wird, und es wieder aufnehmen, wenn es entsperrt ist.
Vielen Dank im Voraus.
Antworten:
0 für die Antwort № 1Sie können unter dem folgenden Code versuchen
@Override
protected void onPause()
{
super.onPause();
// If the screen is off then the device has been locked
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
if (!isScreenOn) {
// The screen has been locked
// do stuff...
}
}
1 für die Antwort № 2
Überprüfen Sie dies. Gibt an, ob Ihr Gerät gesperrt / entsperrt ist
KeyguardManager kgMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean showing = kgMgr.inKeyguardRestrictedInputMode();
Verwenden Sie einen Countdown-Timer und onTick()
Überprüfen Sie diesen Zustand. If
True Stop Timer / speichern Sie die Anzahl else
fortsetzen.