2011-09-29 3 views
8

안드로이드 문서를 살펴보면 앱 종료시기를 알 수없는 것으로 보입니다. 사용자가 명시 적으로 또는 운영 체제에서 자동으로 수행했는지 여부안드로이드 응용 프로그램이 종료 된 시점을 추적 할 수 있습니까?

다음은 에뮬레이트 된 시나리오에서만 사용할 수있는 onTerminate() documentation입니다.

public void onTerminate() 

는 이후 : API 레벨 1

이 방법은 에뮬레이션 과정 환경에서 사용하기위한 것입니다. 프로덕션 안드로이드 장치 인 에서 절대로 호출되지 않습니다. 단순히 프로세스를 제거하기 만하면 프로세스가 제거됩니다. 이렇게하면 사용자 코드 (이 콜백 포함)이 실행되지 않습니다.

사용자가 응용 프로그램을 닫을 때 다시보고 할 수있는 다른 방법이 있습니까?

미래의 프로덕션 응용 프로그램에 추가 기능을 통합해야하는 경우 파일럿/유용성 관점에서 알아야합니다. 이 내 응용 프로그램에서 ...

당신을 도움이 될 수 있는지 여부를

+0

당신이 응용 프로그램이 "종료"될 때 수행 할 작업을 몇 가지 아이디어를 줄 수 있다면, 우리가 그것을 달성하는 방법에 대한 몇 가지 아이디어를 제안 할 수있을 것처럼. –

+0

기본적으로 저는 내부 인프라에 화재가 발생했음을 알려주는 요청을 보내려합니다. 더 이상 아무것도. 이러한 일이 발생하는 빈도를 알면 앞으로 제품의 방향에 영향을 미칠 것입니다. –

+1

귀하의 앱이 시스템이나 사용자에 의해 사망 ​​한 사실을 알 수있는 특정 API는 없지만 때때로 앱과 관련된 상황을 부분적으로 알려줄 수있는 API가 많이 있습니다. onDestory 메소드에서 isFinishing()을 선택하면 액티비티가 finish() 또는 다른 이유로 인해 닫혔습니다 (예를 들어 os 정리). 또한 서비스를 사용하여 onTaskRemoved() 메소드를 수신하여 앱의 태스크가 사용자에 의해 제거되었는지 (예 : recents에서 활동 제거) 추적 할 수 있습니다. – MikeL

답변

5

확실하지, 내가 필요한 정리를 할 Activity.onDestroy()을 사용하고 있습니다. 나는 두 가지 활동을하고 있으며 그들 각각에 onDestroy()을 가지고 있습니다.

이것이 내가 필요로하는 것에 가장 가깝습니다. 실제로는 꽤 잘 작동합니다.

+3

응답을 좋게 생각하면 원치 않는 요청을 잡는 것처럼 보입니다. 예를 들어, 앱이 백그라운드로 놓여져 있고 os가 공간을 찾고있을 때. 잠재적으로 onDestroy (s)를 호출하는 히스토리 스택의 활동 인스턴스를 제거합니다. 이 상황에서 다른 조건을 확인하지 않는 한? –

+0

나는 특별한 점검을하지 않습니다. onDestroy()에서 액티비티의 상태를 저장 한 다음 onCreate()에서 해당 상태를 복원합니다. 내 애플 리케이션이 잘 작동하는 동안, 나는 당신의 요구가 다를 수 있습니다 감사드립니다. –

+0

onDestroy가 확실히 작동합니다. 하지만 우리는 응용 프로그램 스택 또는 응용 프로그램에서 응용 프로그램을 제거하는 것과 같은 응용 프로그램 닫기 이벤트를 추적하려면 법률 배터리 때문에 종료됩니다. 어떤 해결책이 있습니까? –

3

Android 설명서에서 살펴본 결과 앱이 종료 된 시점을 알 수없는 것으로 보입니다. 사용자가 명시 적으로 또는 운영 체제에서 자동으로 수행했는지 여부

사용자는 Android에서 애플리케이션을 닫지 않습니다.

사용자가 응용 프로그램을 닫을 때 다시보고 할 수있는 다른 방법이 있습니까?

사용자는 Android에서 애플리케이션을 닫지 않습니다.

Android는 웹 브라우저와 매우 유사합니다. 사용자는 웹 브라우저에서 웹 응용 프로그램을 닫지 않습니다. 브라우저를 닫을 수 있습니다. 탭을 닫을 수 있습니다. 홈 버튼을 눌러 다른 사이트/앱으로 이동할 수 있습니다. 북마크를 선택하고 다른 사이트/앱으로 이동할 수 있습니다. 문서를 브라우저로 드래그하여 볼 수도 있습니다. 데스크탑 아이콘을 두 번 클릭하여 볼 수 있습니다. 그리고 현재 열어 본 웹 사이트/앱에서 "로그 아웃"링크를 클릭 할 수도 있습니다. 이 중 어떤 것도 사용자가 자신이 속한 웹 사이트/앱을 떠날 수는 있지만, 데스크톱 OS 창에서 닫기 버튼을 클릭하는 것과 같은 방식으로 웹 사이트/앱을 "닫는"것으로 해석 될 수는 없습니다 데스크톱 응용 프로그램을 "닫는"것으로 간주합니다.

@Aleks G 메모에는 사용자가 작업과 관련하여 무엇을하는지 알아보기 위해 재정의 할 수있는 다양한 라이프 사이클 방법이 있습니다. onStop()은 전경 입력을 인수 한 다른 것을 나타내고 현재 활동은 더 이상 볼 수 없습니다. onUserLeaveHint()은 사용자가 홈을 눌렀 음을 나타냅니다. 등등. 그러나 그것들은 어플리케이션 레벨이 아닌 활동 레벨에 있습니다.

+3

작업 관리자 응용 프로그램을 통해 응용 프로그램을 종료하면 사용자가 응용 프로그램을 종료하는 시나리오가됩니다. –

+2

@DevanDanger : 사용자가 작업 관리자를 통해 앱을 죽일 때 또는 사용자가 설정의 서비스 관리 화면을 통해 앱을 강제 종료 할 때 알림을받지 못합니다. – CommonsWare

+6

수정하십시오. "사용자가 작업 관리자를 통해 앱을 죽입니다." "사용자가 응용 프로그램을 닫습니다."그게 전부입니다. 사용자가 응용 프로그램을 닫습니다. 즉, 어쨌든 우리가 그 일을 추적 할 수 있을지 궁금해하고있었습니다. 잘못된 방향으로 유감스럽게 생각합니다. –

0

응용 프로그램에서 BaseActivity 확장 활동을 만들고 활동 대신이 BaseActivity를 확장하십시오. 이 BaseActivity에서는 onDestroy() 메서드를 재정의합니다.

@Override 
protected void onDestroy() { 
     super.onDestroy(); 
    //Write the code that you want to do if the application terminates 
}