2016-07-28 6 views
-2

앱을 만들었습니다. 사용자가 앱이나 앱을 백그라운드에서 종료 할 때 특정 시간이 지나면 앱에서 자동으로 로그 아웃하고 싶습니다. 타이머를 만들었지 만 앱이 들어가는 것처럼 작동하지 않습니다. onStop() 타이머가 정지됩니다. 이 문제에 대해 어떻게해야합니까?Android 로그 아웃 타이머

+0

시도한 바가 있습니까? –

+0

나는이 유형의 유스 케이스를 처리 할 수있는 라이브러리를 개발했다. 언제든지 살펴 보자. https://github.com/jose96043/TimezOut – joseporto

답변

0

모두 Activities을 하나 만들면 BaseActivity입니다. 그런 다음이 BaseActivity 선언 pausedMillis의 paramater에서 : 결국 재정에서 onResume 방법

@Override 
protected void onStop() { 
    super.onStop(); 
    pausedMillis = Calendar.getInstance().getTimeInMillis(); 
} 

: 그 후

private long pausedMillis; 

onStop 메소드를 오버라이드 (override)하는 경우

@Override 
public void onResume(){ 
    super.onResume(); 

    try { 
     long currentMillis = Calendar.getInstance().getTimeInMillis(); 
     if (!(this instanceof LoginActivity) && currentMillis - pausedMillis > 1000 * 60 * 3) { 
      Intent intent = new Intent(this, LoginActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finish(); 
      Toast.makeText(BaseActivity.this, getString(R.string.logout_string), Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

이 당신을 로그 아웃 할 것이다 당신의 app은 백그라운드에서 3 분 이상입니다. 해피 코딩 :

+0

나에게 도움이된다. – Malik

0

로그 아웃하려면 서비스를 만들고 특정 기간이 지나면 해당 서비스의 PendingIntent와 함께 AlarmManager를 실행해야합니다. 다음은 코드 예입니다.

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent m_intent = new Intent(this, YourService.class); 
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0); 
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timePeriod, pi); 

로그 아웃 코드를 YourService에 입력하십시오.