3

잡히지 않은 예외가 나타나면 내 UncaughtExceptionHandler에서 새 작업을 시작하고 싶습니다. 이것이 가능한가?uncaughtException() 호출에 대한 작업 시작

07-14 14:34:06.075: INFO/ActivityManager(74): Starting activity: Intent { flg=0x10000000 cmp=de.rwth/system.ErrorHandler (has extras) } 
07-14 14:34:06.615: WARN/ActivityManager(74): Activity pause timeout for HistoryRecord{4338f8d8 de.rwth/.main} 
07-14 14:34:16.115: WARN/ActivityManager(74): Launch timeout has expired, giving up wake lock! 
07-14 14:34:16.628: WARN/ActivityManager(74): Activity idle timeout for HistoryRecord{433a89d8 de.rwth/system.ErrorHandler} 

나는 때문에, 새로운 스레드에서 자식 활동을 시작하려고 :

은 내가 항상이 오류가 발생할 수 있기 때문에 현재의 활동이 "오류"상태에서 새 자식 활동을 시작할 수있을 것 같아요 나는 현재 쓰레드가 새로운 액티비티를 시작하는 것이 허용되지 않는 상태에 있을지도 모른다고 생각했지만 이것은 역시 효과가 없었다.

누구나 어떻게 작동하는지 알 수 있습니까? 이 오류 상태에있는 동안 현재 활동이 모든 것을 차단하지 못하게하려면 어떻게해야합니까? 처리하도록 예외를 설정하는 방법은 무엇입니까?

+0

'ExceptionHandler'에서 응용 프로그램을 시작하는 것은 잘못되었습니다. – Macarse

+0

사용자에게 예외 출력을 전자 메일로 보내기 만하면됩니다. 어떻게 그렇게? – Pentium10

+0

오류 로그와 함께 새로운 활동 (또는 레이아웃을 설정할 수있는 다른 것)을 표시하고 싶습니다. 어떻게해야합니까? 기본 오류 처리기는 오류 메시지를 표시하므로 가능해야합니다. 어쩌면 문제는 새로운 활동이 현재 (깨진) 활동의 하위 활동이며 이로 인해 표시되지 않을 수도 있다는 것입니다. –

답변

5

매니페스트 파일에 예외 디스플레이 Activity을 지정하고 android:taskAffinityandroid:process을 주 프로세스와 다른 값으로 설정해야합니다. 그런 다음 intent filter을 지정하고이를 사용하여 활동을 시작하고 데이터를 전달해야합니다.

기본적으로 taskAffinity는 <application> 주 태그와 일치하지 않으며 <manifest> 태그에 설정된 것과 동일한 페이지 이름입니다. 당신은 아마도 비슷한 것을 원할 것입니다. android:taskAffinity="org.example.package.TASK.ExceptionDisplay"

기본적으로 하나의 <application> 태그의 모든 것은 동일한 프로세스에서 실행됩니다. 당신은 아마도 android:process=":exception_process"과 같은 것을 원하는 android:process 속성을 사용하여 변경할 수 있습니다.

자세한 내용은 documentation을 확인하십시오.

+0

내가 안드로이드를 설정해야합니까 : taskAffinity android : process to? 내가 의도 필터 부분을 이해하지만 난이 두 가지 매개 변수가 무엇을 잘 모릅니다 .. 내 의도 필터가 호출 의도 작동 및 다음과 같습니다 <의도 필터> \t \t \t \t <액션 안드로이드 : 이름 = "android.intent.action.VIEW"/> \t \t \t \t <데이터 로이드 : mimeType를 = "활성/errorReport"/> \t \t \t \t <카테고리 로이드 이름 = "android.intent.category.DEFAULT"/ > \t \t \t

+0

편집 된 답변으로 인해 더 명확하게 알 수 있습니다. :) – Qberticus

+0

이것은 정말 훌륭합니다, 지금 작동하는 것 같습니다 :) 감사합니다. 그 동안 원격 서비스 (http://stackoverflow.com/questions/3269176/activity-crashes-when-remote-service-crashes)에 대한 다른 질문이있었습니다. 그것은 당신이 안드로이드의이 부분을 잘 알고있는 것 같습니다, 어쩌면 당신도 이것에 대한 답을 알고 있습니다;) 서비스는 친화 속성을 가지고 있지 않습니다. –

관련 문제