2010-02-02 3 views
3

나는 안드로이드가 newVersion < oldVersion에서 SQLiteOpenHelper.onUpgrade()까지의 메소드를 통과 할 수 있음을 테스트했다. 응용 프로그램이 데이터베이스를 다운 그레이드하기를 원합니다.안드로이드에서 DB 다운 그레이드

필자는 어쨌든 이전에 설치 한 새 버전의 응용 프로그램이 있다는 것을 사용자에게 알리고 싶지만이 응용 프로그램을 사용해야한다는 사실을 알고 싶습니다.

어떤 아이디어가 가장 좋은 방법일까요? Toast? AlertDialog (그러나 어떤 문맥에서)?

답변

2

실제로 "이전"버전보다 "새로운"버전으로 해당 메소드를 호출 할 수 있지만 언제 발생합니까?

사용자가 직접 앱을 다시 설치하고 이전 APK로 덮어 쓰지 않는 한이 점에 대해 생각할 필요가 없습니다.

+1

이 시나리오를 생각해보십시오. 당신은 내 앱을 사용하고 즐기는 고급 사용자입니다. 그럼 당신이 설치하지만 싫어하는 (예를 들어 당신이 너무 많이 성장하고 bloatware 될 생각), 그래서 당신은 수동으로 이전 버전의 APK를 설치하기로 결정 새 버전을 공개 해요. 이 사건을 처리하기 위해 onUpgrade() 내부에서 아무 것도하지 않으면 사용자 데이터가 손상되거나 RuntimeException을 throw하여 응용 프로그램이 실행되지 않도록 할 수 있습니다. 어느 솔루션도 나에게 좋지 않습니다. 그럼에도 불구하고이 경우는 드문 경우이지만 답변을 알고 싶습니다.] –

+1

그런 상황에서 응용 프로그램 오류가 발생하는 이유는 무엇인지 확신 할 수 없습니다. 비표준 사용 시나리오 고급 사용자는 다운 그레이드를 위해 새로 설치해야한다고 생각할 수도 있습니다. –

+0

Daniel, 네가 맞다고 생각해. 그것은 귀찮게하는 것이 그렇게 중요하지 않습니다. 이 경우 RuntimeException을 던질 것입니다. 나를 설득 해 주셔서 감사합니다] –

-1

Google은 앱 (예 : v1.x 및 v2.x)에 여러 개의 활성 분기를 가지고 있으며 테스트를 위해 내부적으로 출시합니다. 이는 테스터가 때때로 새로운 버전의 맨 위에 이전 버전을 설치 함을 의미합니다.

이 시나리오에서 정상적으로 대처하는 것이 좋으며 (오류 팝업, 데이터베이스를 날려 버리는 등) 테스터가 강제 종료 메시지를보고 나서 adb logcat 로그를 봐야합니다 이것이 버전 불일치 때문이라는 것을 확인했습니다.

처음에는이 문제가 발생할 수있는 다른 적절한 시나리오가 있다고 걱정했습니다. Android 마켓에서 이전 버전을 다시 활성화 할 때 (예 : 새 버전의 치명적인 버그로 인해)

그러나, Android docs는 이전 버전을 활성화 할 수 있다고하는 것 :

당신은 그것을 대체 년대 APK보다 버전 코드 낮은 가진 새 APK를 활성화 할 수 없습니다.

따라서이 시나리오를 실행하려면 이전 버전을 새 버전 번호로 다시 빌드해야 활성화 할 수 있습니다. IMO 나쁜 시나리오를 철회하는 동안 누군가가 쉽게이 실수를 4am에 만들 수 있기 때문에이 시나리오에 계속 대처할 가치가 있습니다!

+0

Playstore 출시에만 해당됩니다. 모든 사용자는 저장된 apk 파일에서 이전 버전의 앱을 설치할 수 있습니다. – Radon8472

관련 문제