我一直在想,是否可以通过捕获父活动中的崩溃来停止
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做到这一点?
谢谢,
编辑:我不需要崩溃数据,我只想知道如何避免应用程序崩溃.
环顾四周我发现:
Using Global Exception Handling on android
其中包括这一部分:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread paramThread,Throwable paramThrowable) { Log.e("Alert","Lets See if it Works !!!"); } });
让我记录uncaughtException,避免“崩溃”,但是,应用程序进入黑屏并停止响应…
编辑2:
经过很多阅读(感谢user370305)的线程How do I obtain crash-data from my Android application?
我已经到了一个死胡同,无论是处理uncaughtException,并调用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); });
解决方法
自从
their own lifecycle以来,必须独立管理Android中的活动.因此,在生成它们的活动中捕获异常.
如果您的活动需要交互以返回到之前的用户活动,则完成捕获异常(子)的活动,并让具有结果知识的先前活动(父级).请参阅Starting Activities and Getting Results作为相互传达父母和儿童活动的方法.