Я пытаюсь реализовать функцию автоматического выхода из системы. Если приложение не используется в течение 1 часа, я бы хотел автоматически привести пользователя на экран входа в систему. Когда телефон блокируется, поток, который отслеживает, если приложение используется, похоже, не продолжается. Мой код выглядит следующим образом:Автоматический выход из системы
/**
* This Deamon checks if the application is idle and
*/
private class LogoutDeamon extends Thread {
public void run() {
while (!logoutDeamon) {
try {
System.out.println("Logout Counter:" + logoutConter);
if (logoutConter <= 0) {
logoutDeamon = true;
ApplicationManager.getInstance().setLoggedOut(true);
ApplicationManager.getInstance().Log(Level.INFO, "Auto Log out");
logout();
} else {
decreamentCounter();
}
sleep(60000 * 1);
} catch (ParserException ex) {
Log(Level.ERROR, " Par. Ex. in Logout-Deamon:" + ex.getMessage());
logout();
} catch (ServerException ex) {
Log(Level.ERROR, " Ser. Ex. in Logout-Deamon:" + ex.getErrorMessage());
logout();
} catch (InterruptedException ie) {
Log(Level.ERROR, "Int. Ex. in Logout-Deamon:" + ie.getMessage());
} catch (Exception ex) {
Log(Level.ERROR, "Erro in Logout-Deamon:" + ex.getMessage());
logout();
}
}
}
private void logout(){
Intent broadcastIntent = new Intent();
broadcastIntent
.setAction("com.package.ACTION_LOGOUT");
applicationContext.sendBroadcast(broadcastIntent);
Intent loginIntent = new Intent(applicationContext,
Login.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
applicationContext.startActivity(loginIntent);
}
}
Я пропустил что-то? Может кто-то любезно мне помочь с этим. Заранее спасибо.
Проблема заключается в том, что фактор времени не фиксирован. Я получаю период выхода из сервера. Поэтому я помещаю нить в течение минуты и уменьшаю таймер. Будет ли поток попадать в состояние паузы, если телефон заблокирован? –
Ваша нить прекратит выполнение, когда устройство перейдет в спящий режим. Во всяком случае, когда устройство переходит в спящий режим или когда пользователь закрывает приложение, вызывается onPause. Когда приложение запустится снова, будет вызываться onResume. Эти два метода должны быть достаточными для реализации вашей бизнес-логики - не требуется время подсчета потоков. – kgiannakakis
Спасибо. Должна ли эта логика выполняться во всех видах деятельности? Поскольку у меня есть несколько действий в моем приложении? –