为什么Activity中的崩溃不会导致整个应用程序崩溃 - Android

时间:2014-12-01 14:06:34

标签: android android-intent android-activity

我刚刚开始使用Android Develop(拥有一些iOS开发经验),而且我非常震惊为什么如果我“崩溃”,只有一个活动崩溃不是整个应用程序?

我创建了演示应用程序(为什么只有MyActivity3崩溃不是整个应用程序?)

http://youtu.be/Jo4oBMAsSew

启动MyActivity2的代码:

Button goToActivity2Button = (Button) this.findViewById(R.id.goToActityButton);

final MyActivity2 self = this;
goToActivity2Button.setOnClickListener(new View.OnClickListener() {
   @Override
       public void onClick(View v) {
           Intent activity3Intent = new Intent(self, MyActivity3.class);
           self.startActivity(activity3Intent);
       }
});

在MyActivity3中崩溃

Button goToActivity2Button = (Button) this.findViewById(R.id.crashTheAppButton);

goToActivity2Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        String nullString = null;
        nullString.length();

    }
});

2 个答案:

答案 0 :(得分:0)

因为按下按钮时MyActivity2没有完成。你开始进入MyActivity3的意图,你创建MyActivity3但MyActivity2仍然是#34;在后台"。如果要处理活动周期,则必须覆盖onResume()onPause()方法。 直到你没有finish()一项活动,它将继续开放。

答案 1 :(得分:0)

我也是Android编程的新手,并且无数次遇到了同样的情况。如果我没有弄错,每个活动被视为一个不同的主题。当一个线程崩溃时,它并不意味着整个程序会崩溃,只是发生异常的线程。这就是为什么当一个Activity崩溃时,如果异常不是先前打开的Activity的问题,那么当前的Activity将会崩溃,而在后台运行的前一个将成为正在运行的Activity。一般来说,根据我的意见,你应该让你的应用程序结束活动。相反,最好让操作系统以其认为最佳的方式处理活动的开启和关闭。