我一直在想,是否可以通过在父活动中捕获崩溃来阻止Android应用程序的崩溃。
假设我在子活动的onCreate方法中引发了致命异常,我是否能以任何方式捕获该异常?或者无论我尝试什么,应用程序都会崩溃?
以下是我的一个示例:
Main.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ly_main);
// My Main activity starts
try{
// Call the next activity
Intent intent = new Intent(getApplicationContext(), Child.class);
startActivity(intent);
}catch(Exception e){
Log.wtf("Exception_WTF","Exception from child activity woohoo \n "+ e.toString());
}
Child.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ly_child);
// Create exception... for science
int a = 0;
a = 1/a;
}
这不起作用。子活动会崩溃并带着父活动一起崩溃。
通过startActivityForResult是否可能实现?
谢谢,
编辑:我不需要崩溃数据,我只想知道如何避免应用程序崩溃。
我找到了以下内容: 在Android上使用全局异常处理
其中包含了这段内容:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Alert","Lets See if it Works !!!");
}
});
我想记录未捕获异常以避免“崩溃”,但是应用程序变成黑屏并停止响应...
编辑2: 经过大量阅读(感谢user370305)在线程如何从我的Android应用程序中获取崩溃数据?
我陷入了僵局,要么处理未捕获的异常并调用defaultUEH.uncaughtException(paramThread,paramThrowable)让应用程序崩溃,要么不调用defaultUEH.uncaughtException,应用程序既不会崩溃也无法响应...有任何想法吗?
final Thread.UncaughtExceptionHandler defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Alert","Lets See if it Works !!!");
defaultUEH.uncaughtException(paramThread, paramThrowable);
});