【发布时间】:2014-05-27 06:55:53
【问题描述】:
在我的应用中有两个活动。活动 1 是 web 视图(== 主要活动)。 Activity 2 是原生 pdf 阅读器(子活动)。如果单击某些链接,则活动 1 通过意图打开活动 2。意图不使用任何特定标志。如果用户完成阅读 pdf,他将关闭活动 2。触发另一个意图,用户到达他开始的点(活动 1)。到目前为止没问题!
不幸的是,pdf 阅读器仍然有问题,有时会崩溃。 在这些情况下,我想要与上面提到的相同的行为:用户应该到达他开始的点(活动 1)。 在活动 2 中,我集成了一个实现 UncaughtExceptionHandler 接口的类,以捕获任何未捕获的异常并在 uncaughtException 方法中处理它。但是我在那里完成的最好的结果是活动 1 的娱乐。
我的目标无法实现吗?或者换句话说,如果一个子活动崩溃了,你能得到的最好的就是父活动的重新创建(== 主活动)?
编辑:
通过 Alexander 的回答,我找到了解决方案:
AndroidMainfest.xml:
<activity
android:name="de.fcms.webapp.CoreActivity"
android:label="@string/label_name"
android:theme="@style/Theme.AppTheme"
android:configChanges="orientation|screenSize"
android:windowSoftInputMode="adjustResize"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="de.fcms.framework.module.PdfActivity"
android:label="@string/setting_activity_name"
android:parentActivityName="de.fcms.webapp.CoreActivity"
android:configChanges="orientation|screenSize"
android:theme="@style/Theme.PdfActivity"
android:process="de.fcms.framework.PdfActivity">
</activity>
PdfActivity.java:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
PdfActivity.this.getBackToMainActivity();
android.os.Process.killProcess(android.os.Process.myPid());
}
});
//let's force a crash
throw new OutOfMemoryError();
}
private void getBackToMainActivity () {
getLogger().debug("getBackToMainACtivity");
Intent intent = new Intent(this, CoreActivity.class);
setResult(2001, intent);
finish();
}
【问题讨论】:
-
activity2 完成后,如果你点击后退按钮,你可以移动到上一个活动?我的问题你能告诉我为什么 activity2 崩溃了吗?
标签: android android-intent exception-handling android-activity android-webview