2014-12-02 5 views
0

지금 암호 관리자 & 생성기 응용 프로그램을 개발 중입니다. 거의 완료되었지만 해결하기가 다소 어려워 보이는 문제에 직면하고 있습니다.안드로이드에서 최소화 할 때 강제 종료하는 방법

내 앱의 보안을 향상시키기 위해 타이머를 추가 했으므로 사용자가 비활성 상태 인 경우 앱이 종료됩니다. 이제는 사용자가 최소화하려고 할 때마다 앱을 닫고 싶습니다 ('홈'버튼과 '최근 앱'버튼 누르기).

onStop()onPause()을 사용해 보았습니다.하지만 내 앱의 모든 활동이 다른 상태로 바뀌면 언급 된 상태로 이동하기 때문에 아무 효과가 없습니다. 나는 Keycode == Keycode.HOME을 어떻게 사용할 수 없으므로 사용할 수 없습니까?

+0

왜 'onKeyPressed'기능을 재정의 할 수 없습니까? – busylee

+0

내가 읽고있는 동안 나는 홈 버튼을 무시할 수 없다. Android는 나를 그렇게 허용하지 않습니다. – Razvi

+0

네, 맞아, 내 실수 야. 사용자 mb가 입력 한 비밀번호를 사용하여 onPause에서 앱을 잠그고 onResume에서 잠금 해제 할 수 있습니까? – busylee

답변

1

귀하의 모든 활동이 onResume() 및 onPause()에서 상태를 추적하는 것이 좋습니다. 즉, 활동의 수를 계산하는 일부 정적 응용 프로그램 변수를 증가시킬 수 있습니다. 이 수가 0이되면 활동이 표시되지 않으며 정리를 할 수 있음을 의미합니다.

@Don Chakkappan이 제안한 해결책은 더 이상 볼 수 없어도 활동이 활성으로보고 될 수 있으므로 충분히 좋지 않다고 생각합니다.

+0

그건 아주 좋은 생각입니다. 나는 그것을 시도 할 것이다. 그리고 네, 그게 내 문제입니다, 활동은 onStop()/onPause()를 할 때마다 움직일 때입니다. – Razvi

+0

실제로 VARIABLE ++를 추가했습니다. onResume(); 및 가변 -; onStop(); VARIABLE == 0이면 finishAffinity()가 발생합니다. 모든 것이 완벽하게 작동합니다. 사용자가 HOME 버튼 또는 RECENT APPS 버튼을 누르면 앱이 종료됩니다. 고마워요 :) – Razvi

+0

당신을 환영합니다 :-) – muslidrikk

0

은 지속적 그럼 당신은()을 완료 또는 안드로이드 사용 모델은 그렇게하지를 알려줍니다 컨텍스트

0

에 따라 서비스를 중지 할 수있는 서비스

  ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); 
      List<RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
      @SuppressWarnings("unused") 
      ComponentName componentInfo = taskInfo.get(0).topActivity; 
      Log.d(TRCU.LOG_TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()); 
      String currentActivity=taskInfo.get(0).topActivity.getClassName(); 

에서 지상의의 활동을 확인합니다. 백그라운드로 갈 때 모든 비밀번호 생성/관리를 비활성화하고 다시 시작할 때 다시 활성화 할 수 있습니다. 일시 중지 상태에서 응용 프로그램을 종료하는 것보다 훨씬 빠른 성능 향상이 가능합니다.

앱이 보안 사용 응용 프로그램이므로 모든 민감한 정보는 onPause에서 액세스 할 수 없으므로 디자인에 너무 많은 영향을 미치지 않습니다.