为什么在活动中崩溃不会使整个应用程序崩溃-Android

为什么在活动中崩溃不会使整个应用程序崩溃-Android,android,android-intent,android-activity,Android,Android Intent,Android Activity,我刚刚开始Android开发(有一些iOS开发经验),我非常震惊为什么如果我“崩溃”,只有一个活动而不是整个应用程序崩溃 我已经创建了演示应用程序(为什么只有MyActivity3崩溃而不是整个应用程序?) 启动MyActivity2的代码: Button goToActivity2Button = (Button) this.findViewById(R.id.goToActityButton); final MyActivity2 self = this; goToActivity2Bu

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

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

启动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);
       }
});
在我的活动中崩溃3

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

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

        String nullString = null;
        nullString.length();

    }
});

因为当你按下按钮时MyActivity2还没有完成。您开始打算进入MyActivity3,您创建了MyActivity3,但MyActivity2仍处于“后台”。如果要处理活动周期,必须重写
onResume()
onPause()
方法。
在你没有
finish()
一个活动之前,它将保持打开状态。

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

self.startActivity(activity3Intent)
中删除
self
。没有必要使用self。请注意否决投票的原因。我只是对AndroidOS的设计决策感到好奇。你移除了吗<代码>自我从
self.startActivity(activity3Intent)
?,也将
self
更改为
MainActivity2。此
位于
Intent activity3Intent=新的意图(self,MyActivity3.class)@DhavalGondaliya使用final self有什么问题?不需要额外的代码<代码>意图意图=新意图(SouceActivity.this,DestinationActivity.class);星触觉(意向)如何
Intent
工作所有活动都在同一个线程(称为主线程)中运行。