앱을 개발 중이며 응급 복구 기능을 넣어 앱을 다시 시작하고 싶습니다. 나는 이것과 관련된 어떤 코드도 작성하지 않았다. 내 생각은 상태를 모니터링하는 서비스를 시작하는 것입니다. 이 접근 방법을 기반으로 문제는 서비스가 내 앱에서 시작되기 때문에 앱이 죽으면 죽을 것입니다. 내 앱에서 서비스를 시작하고 앱을 독립적으로 실행하여 내 앱을 모니터링하고 다시 시작할 수 있습니까?크래시 복구 android app
답변
설명하는 문제에 접근하는 데는 여러 가지 방법이 있습니다. 아마도 가장 간단한 방법은 프로젝트에 사용자 정의 Application
클래스를 제공하고 onCreate() 메서드에서 Thread.setDefaultUncaughtExceptionHandler(this);
을 호출하여 클래스를 기본 예외 처리기로 할당하는 것입니다. 그러면 충돌 할 때 호출 될 public void uncaughtException(Thread t, Throwable e)
을 다시 정의해야하며 재시작을 예약 할 수 있습니다.
프로세스 모니터링 이외의 기능을 원한다면 응용 프로그램에서 자체 프로세스를 갖도록 정의 된 서비스가 있습니다. 이것은 AndroidManifest 속성으로 수행됩니다.
또 다른 옵션은 Android AlarmManager를 사용하는 것으로, 시스템에서 처리하고 응용 프로그램을 다시 시작할 수 있습니다.
android.intent.action.BOOT_COMPLETED
액션으로 인 텐트 필터를 등록하여 전화 부팅시 서비스를 시작할 수 있습니다. 더 많은 정보는 here 또는 이와 유사하게 찾을 수 있습니다. question
-1 :이 답변은 응용 프로그램 충돌/재시작과 관련이 없습니다. – mah
응용 프로그램의 상태를 확인하는 실행중인 서비스와 관련이 있습니다. 왜 AlarmManager가 Service보다 나은가? 그리고 응용 프로그램에 스레드가 두 개 이상있을 수 있습니다. – marwinXXII
AlarmManager가 서비스보다 뛰어나다는 말을하지 않았지만 다른 옵션이라고 말했습니다. 그러나 응용 프로그램이 보류중인 경보를 깨지 않고 중단 될 수 있으므로 더 좋습니다. 더 중요한 것은 질문이지만, 질문은 그러한 서비스 (BOOT_COMPLETED는 대답 임)를 시작하는 방법이 아니라 오히려 가능성에 관한 것입니다. 당신의 대답은 그가 결코 말하지 않은 장치 부팅시에 뭔가를 시작하기를 원한다고 가정합니다. 그는 앱 크래시 복구를 원한다고 말했습니다. BOOT_COMPLETED는해야 할 일보다 훨씬 오래 걸리고 자원을 낭비하며 사람들의 전화 속도를 저하시키는 것을 제안합니다. – mah
- 1. 크래시 복구
- 2. Android Java App SIGSEGV로 크래시
- 3. 크래시 된 서버에서 MySQL 테이블 복구
- 4. MySQL의 복제 및 마스터 서버 크래시 복구
- 5. Android 크래시 보고서 액세스
- 6. AddView 원인 크래시 android
- 7. 빈 EditText Android 크래시
- 8. Android 자르기 이미지 크래시
- 9. Android 크래시 SQLiteDiskIOException
- 10. Symbolicating Cocoa Mac App 크래시 로그
- 11. WPF App 크래시 : 모듈 mscorwks.dll 오류
- 12. Cocoa App 크래시 타사 API 호출
- 13. Android ToggleButton 크래시 (리소스 NullPointerException)
- 14. Android 하드웨어 가속 webview 크래시
- 15. Android MenuItem setActionView (null) 크래시
- 16. Android 크래시 보고서 버튼이 표시되지 않음
- 17. 버그 센스로보고하지 않는 Android 마켓 크래시 보고서
- 18. Android 튜토리얼 thenewboston nullpointer 예외 크래시
- 19. android-opencv 샘플 크래시 - 튜토리얼 2 고급
- 20. exFAT 파일 시스템을 사용하는 Android sqlite 크래시
- 21. Android HttpPost 크래시, 디버그 할 수 없습니까?
- 22. Android 기기의 크래시 앤 리 부트
- 23. Android 크래시 서비스에서 ACRA를 사용하는 보고서
- 24. NSCFData isResizable 크래시?
- 25. Android 전화에서 Eclipse로 APK 파일 복구
- 26. Android System App 101
- 27. Android + App Engine - 오류
- 28. Android App OpenFeint 문제
- 29. Android APP + SQL
- 30. Android App Gradient Background
AlarmManager 내 앱이 예정된 경우 해결책이 될 수 있다고 생각합니다. Thread.setDefaultUncaughtExceptionHandler 사용 하나의 장소에서 예외 처리를 사용하면 사용할 수 있습니다. 나에게 서비스를 사용하는 것은 좋은 생각이다 : 나는 이것을 발견했다 [link] (http://stackoverflow.com/questions/7254720/how-to-restart-an-activity-automatically-after-it-crashes?rq=1) 유용합니다. 그러나 저는 다른 접근법을 듣고 싶습니다. – learner
유스 케이스에서 AlarmManager를 사용하면 앱이 시작될 때 다소 지연되면서 알람을 예약합니다. 해당 알람이 울리면 앱이 실행 중인지 확인한 다음 (필요한 경우 다시 시작) 다음 알람 일정을 다시 예약합니다. 앱이 정상적으로 종료되면 현재 알람이 제거됩니다. 이 사용 사례는 앱이 시작될 때 시작하고 앱이 완료되는 즉시 중지하기 때문에 중지되지 않은 모델에 적합합니다. – mah