2011-10-06 4 views

답변

1

onPause()을 사용하십시오. this에 따르면 을 호출 할 수있는 유일한 방법은 onPause()입니다. 후자 인 onStop()onDestroy()은 호출되지 않을 수 있습니다.

그러나 AFAIK는 응용 프로그램이 일시 중지 (예 : 다시 설치)하는 이유를 알 수 없습니다. 다시 설치를 감지하는 유일한 방법은 다음과 같습니다.

  1. 앱의 버전 코드를 저장하려면 SharedPreferences을 사용하십시오.
  2. 앱이 시작되면 저장된 버전 코드를 현재 버전 코드와 비교하여 확인하십시오 (후자의 경우 PackageManager 사용). 차이점이있는 경우 앱을 업그레이드 할 때 수행해야 할 작업을 수행하고 SharedPreferences의 이전 버전 코드를 덮어 씁니다.

또한 다시 설치하는 동안 버전 코드가 필요합니다. 동일한 버전 코드가있는 패키지로 adb install -r을 수행하는 중이라면 알 수있는 방법이 없습니다.

+0

내 앱에서 onPause가 발생하는지 여부를 알 수있는 플래그를 추가하고 있습니다. 그래서 시나리오의 대부분 또는 전부를 제거합니다. – piojo

+0

그건 좋은 생각이 아닐 수도 있습니다. 앱은 전화 통화, 뒤로/집으로 치는 사용자, 사용자가 알림을 클릭하는 등 일시 중지 할 수도 있습니다. – Felix

0

lifecycle - onDestroy()에 대한 설명 읽기는 호출 할 수 없습니다. 신뢰할 수있는 유일한 콜백은 onPause()이므로 뭔가를해야합니다.

관련 문제