android – 从父活动中的子活动捕获异常

前端之家收集整理的这篇文章主要介绍了android – 从父活动中的子活动捕获异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在想,是否可以通过捕获父活动中的崩溃来停止 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作为相互传达父母和儿童活动的方法.

猜你在找的Android相关文章