다른 Activity
이 처리되지 않은 예외를 발생시키는 경우에 내 Android에서 이전 Activity
으로 돌아가도록 Android에 요청하는 방법이 있습니까?다른 활동이 충돌하면 Android가 이전 활동으로 돌아갑니다.
답변
처리되지 않은 예외로 인해 스레드가 사망 한 경우 알림을 받으려면 Thread.setDefaultUncaughtExceptionHandler
을 사용해보십시오. 그러나 Dalvik이 그 메커니즘을 구현했는지 확신 할 수 없습니다. 설명서에 스레드/프로세스 부활에 대한 내용이 없으므로 UncaughtExceptionHandler
에서 다른 활동을 시작할 수 없습니다.
업데이트
좋아. 테스트 한 결과 이제는 응용 프로그램이 UI 스레드에서 예외를 throw 한 경우 위의 기술을 사용하여 이전 활동으로 돌아갈 수 있습니다. 이는 예외로 인해 main looper 응용 프로그램이 종료되어 응용 프로그램이 더 이상 UI 메시지를 처리 할 수 없기 때문에 발생합니다.
난 당신이 원하는 것을 달성하기 위해 찾은 유일한 방법은 다음과 같은 더러운 해킹 :
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
while (true) {
try {
Log.i("MyLooper", "Starting my looper");
Looper.loop();
} catch (Exception e) {
Log.e("MyLooper", "Caught the exception in UI thread, e:", e);
showPreviousActivity();
}
}
}
private void showPreviousActivity() {
// your implementation of showing the previous activity
}
}
그리고 당신의 AndroidManifest.xml에에서는 MyApplication 등록 :
<application android:name=".MyApplication">
…
의 구현을 showPreviousActivity()
방법은 귀하에게 달려 있습니다. 가능한 솔루션 중 하나는 ActivityTracker 클래스의 현재 Activity 인스턴스를 추적하고 코드 showPreviousActivity
에서 현재 활동 finish()
을 호출하는 것입니다.
try-catch
블록을 사용하여 예외를 catch하고 startActivity
을 사용하십시오. 잡는 일없이 다른 활동으로 갈 수는 없습니다.
atm 예외는 없습니다. 처리되지 않은 예외가 발생하는 경우 코드를 작성하고 싶습니다. 어디로 가야할지 모릅니다. – styler1972
당신은 활동이 충돌 할 때 그것을 알아낼 필요가 있습니다, 그것은 응용 프로그램을 닫습니다. –
순간적으로 충돌하지 않으므로 가설적인 시나리오입니다. – styler1972
- 1. 전자 메일을 보내는 데 문제가 있습니다 ... 이전 활동으로 돌아갑니다
- 2. 서비스 콜백이 android에서의 활동으로 돌아갑니다.
- 3. 이전 활동이 뒤로 가기 버튼을 누르지 않습니다.
- 4. 이전 커밋되지 않은 상태로 돌아갑니다.
- 5. 이전 활동으로 돌아갈 때 아이콘이있는 결과
- 6. 새 활동의 데이터를 이전 활동으로 전달 하시겠습니까?
- 7. Blackberry : 목록에서 항목을 선택하고 이전 화면으로 돌아갑니다.
- 8. 다른 활동을 호출하는 주요 활동이 있습니다.
- 9. AsyncTask onPostExecute는 이전 활동으로 돌아 가지 않습니다.
- 10. 이전 활동으로 이동하는 코드를 작성하는 방법이 있습니까?
- 11. 새 활동이 시작될 때 이전 활동이 어두워지지 않음
- 12. Fortumo에서 결제 상태 확인 android가 주된 활동으로 이동
- 13. 한 활동에서 이전 활동으로 문자열 전달
- 14. 한 활동에서 이전 활동으로 값을 전달하는 방법
- 15. 스택의 이전 활동을 현재 활동으로 끝내시겠습니까?
- 16. Android가 모달 활동 시작
- 17. android는 첫 번째 화면으로 돌아갑니다.
- 18. 하위 활동의 상위 활동으로 돌아 가기
- 19. Destructor - 앱이 충돌하면 호출됩니다.
- 20. 활동이 변경 되었습니까?
- 21. cscope : 결과 창으로 돌아갑니다.
- 22. 서비스에서 활동으로 데이터 보내기
- 23. 활동을 다시 시작하지 않고 활동으로 다시 시작
- 24. 다른 활동으로 전환 할 때 백그라운드에서 계속 활동을 유지 하시겠습니까?
- 25. Android : finish()를 호출하지 않고 이전 활동으로 돌아 가기
- 26. 유칼립투스 클러스터 컨트롤러가 충돌하면 어떻게됩니까?
- 27. JVM이 충돌하면 스레드가 여전히 존재합니까?
- 28. 프로세스에서 하나의 스레드가 충돌하면 어떻게됩니까?
- 29. noHistory = true인데도 활동으로 돌아 가기
- 30. autoincrement가 MySQL의 기존 데이터와 충돌하면 어떻게됩니까?
애플리케이션에 'Activity'가 두 개 이상 실행중인 경우 getApplicationContext()는 유효한'Context '. – styler1972
'UncaughtExceptionHandler'를 사용하고 예외가 UI 스레드에서 발생하면'startActivity()'는 주 루퍼가 이미 죽어 있기 때문에 도움이되지 않습니다. – Idolon