2011-09-11 3 views
0

백그라운드에서 120 초 동안 유휴 상태로두면 앱이 자동 종료됩니다. 예를 들어 내 앱이 사용 중이며 HOME 키를 탭한 다음 브라우저 아이콘을 탭하면 브라우저 앱이 포 그라운드에있는 동안 내 앱이 백그라운드로 푸시됩니다. 나는 Runnable를 타이머 120 초 후에 호출 할 것을 예정 한 : 백그라운드에서 정상적으로 앱을 종료하는 방법은 무엇입니까?

Intent intent; 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
myActivity.startActivity(intent); 

하는 글로벌 플래그가 그렇게하도록 설정되어있는 경우 (즉, 응용 프로그램을 닫습니다 내가 마무리 호출에서 onCreate() 메소드()에 대한 내 myActivity 클래스 내부).

브라우저 앱을 백그라운드로 보내고 내 홈 화면 페이지 만 보는 백그라운드 앱이 닫힐 때 브라우저 앱을 사용할 때를 제외하고는 정상적으로 작동합니다. 내 앱이 닫히기 전에 몇 초 동안 포 그라운드로 튀어 나오기 때문에 브라우저 앱이 백그라운드로 푸시됩니다.

내 작업을 죽이는 다른 방법 (예 : System.exit (0))이 있지만 나중에 해당 앱을 다시 실행하려고하면 해당 메서드를 사용하려고 할 때 "강제 종료 됨"오류 메시지가 표시됩니다. 또한 System.exit() 메서드를 사용하면 finish() 호출과 마찬가지로 응용 프로그램이 정리되지 않으므로 사용하지 않는 것이 좋습니다.

누군가 전경 달리기 앱에 영향을주지 않고 백그라운드에서 앱을 정상적으로 종료 할 수있는 방법을 알고 있습니다.

감사합니다.

+0

왜 그렇게 했습니까? 안드로이드는 자체적으로 메모리 관리와 정리를 처리하고 훌륭한 작업을합니다. 액티비티 라이프 사이클의 적절한 메소드 인'onPause()','onStop()'및'onDestroy()'안에서 자유로운 리소스. –

+1

앱에 화면에 표시된 보안 데이터가 포함되어 있기 때문에이를 수행해야합니다. 사용자가 브라우저 (또는 다른 앱)로 전환하면 일정 기간 후에 다시 버튼을 눌러 보안 데이터를 사용할 수 없도록하고 싶습니다. – cohoman

답변

2

타이머가 만료 된 경우 onResume() 방법을 확인할 수 있습니다. 그렇다면 간단하게 데이터를 emtpy로 설정하고 전화하십시오. finish()

0

프로세스는 백그라운드에서 계속 실행되며 어떤 방식 으로든 "중지됨"또는 "일시 중단됨"이 아닙니다 (UI 만 비활성 상태 여야 함). 그래서 적당한 간격 후에 활동을 끝낼 타이머 등을 게시 할 수 있습니다.

+0

특정 액티비티가없는 상태에서 일련의 명령문을 실행하는 실행 가능한 타이머가 있습니다. 내가 알아야 할 것은, 어떤 액티비티가 현재 태스크 액티비티 스택에서 가장 많이 활성화되어 있고, 특정 액티비티에 finish() 메소드를 호출 할 수있는 방법입니다. – cohoman

0

FLAG_ACTIVITY_CLEAR_TOP을 의도 플래그로 호출 할 수 있으며 해당 의도에서 시작된 활동을 제외한 모든 항목이 삭제되고 해당 항목에서 finish()를 호출하고 100 % 종료 할 수 있다고 생각합니다.

관련 문제