在uncaughtException()调用上启动活动

时间:2010-07-14 13:24:23

标签: android exception exception-handling android-activity android-intent

我希望在出现未捕获的异常时从我的UncaughtExceptionHandler开始新的活动。这可能吗?

我认为当前活动无法在“错误”状态下启动新的子活动,因为我总是遇到这样的错误:

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}

我尝试从新线程启动子活动,因为我认为当前线程可能处于不允许启动新活动的状态,但这也不起作用。

所以有人知道这可行吗? 在处于此错误状态时,如何阻止当前活动阻止所有内容?是设置处理异常的任何方法吗?

1 个答案:

答案 0 :(得分:5)

您需要做的是在清单文件中指定例外显示Activity,并将android:taskAffinityandroid:process设置为与您的主流程不同的值。然后,您需要指定intent filter并使用它来启动活动并传递数据。

默认情况下,taskAffinity是从主<application>标记继承的,与<manifest>标记中设置的页面名称相同。你可能想要android:taskAffinity="org.example.package.TASK.ExceptionDisplay"

之类的东西

默认情况下,一个<application>标记中的所有内容都在同一进程中运行。您可以使用android:process属性更改它,您可能想要android:process=":exception_process"之类的内容。

有关详细信息,请查看此documentation