화면이 잠겨 있거나 (앱이 아직있는 상태에서) 앱이 백그라운드로 5 분 이상 이동 한 경우 앱을 로그 아웃하고 싶습니다. 나는 AppCompatActivity를 확장하는 BaseActivity를 가지고있다. 다른 모든 활동은 BaseActvity를 확장합니다.
BaseActivity에서 아래 코드를 사용했지만 5 분이 지나면 앱이 LoginActivity에서 단독으로 열립니다. 이걸 좀 도와 주실 수 있습니까? 아래5 분 동안 백그라운드에서 앱을 실행할 때 자동 로그 아웃 사용자, 사용자가 앱을 다시 시작할 때?
자바 코드 :
@Override
protected void onPause() {
super.onPause();
Log.v(TAG, "on pause called");
timer = new Timer();
Log.i(TAG, "Invoking logout timer");
LogOutTimerTask logoutTimeTask = new LogOutTimerTask();
timer.schedule(logoutTimeTask, 300000); //auto logout in 5 minutes
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "on resume called");
if (timer != null) {
timer.cancel();
Log.i(TAG, "cancel timer");
timer = null;
}
}
private class LogOutTimerTask extends TimerTask {
@Override
public void run() {
//redirect user to login screen
Constants.SESSION_ID = "";
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
}
편집
나는 가능한 모든 제안을 추가하지만 응용 프로그램을 실행할 때 타이머에도 노력하고 있습니다. 코드 스 니펫이 유용 할 것입니다.
는 LoginActivity에 의도를 전달하지 않습니다. – user3040153
대기중인 인 텐트가있는 경보 관리자를 사용합니다. –