Android 一个活动中的异常不';不要停止其他活动

Android 一个活动中的异常不';不要停止其他活动,android,exception,android-activity,Android,Exception,Android Activity,我的OnCreate方法(在MainActivity中): 当点击按钮时,应用程序崩溃;显示“不幸的是,应用程序已停止”对话框。单击“确定”按钮时,将显示DetailsActivity屏幕。为什么会发生这种情况?我希望整个应用程序崩溃 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_

我的OnCreate方法(在MainActivity中):

当点击按钮时,应用程序崩溃;显示“不幸的是,应用程序已停止”对话框。单击“确定”按钮时,将显示DetailsActivity屏幕。为什么会发生这种情况?我希望整个应用程序崩溃

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
           // This will throw exception
        Integer.parseInt("Güzelim");

        Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
        startActivity(intent);
    }
});
}
这会使你的整个应用程序崩溃


这将使您的整个应用程序崩溃。

应用程序崩溃是因为您试图将字符串转换为引发NumberFormatException的整数。

应用程序崩溃是因为您试图将字符串转换为引发NumberFormatException的整数。

类似问题可能会有所帮助

例如,用户可能正在浏览web,单击youtube链接 启动youtube应用程序,然后单击共享按钮启动他们的应用程序 喜爱的社交网络应用程序,并发布视频链接。就这些 同一任务的一部分;如果用户按下几次,他们将 返回浏览器中他们开始的页面

一旦启动社交网络应用程序,系统可能会决定 它的内存不足,它将杀死 浏览器释放更多信息的过程。(毕竟,它不是在前面和后面 用户不会注意到。)当用户按下后退按钮 返回重新启动的浏览器活动并重建 用户离开它的最后一个状态。在最坏的情况下,用户会体验到 事情重新初始化时的短暂延迟

但是,恢复先前活动状态的事件序列是相同的 即使在同一个应用程序中,也可能在同一个过程中发生。在你的 场景中,活动B因崩溃而关闭。那么这个系统呢 做它一直做的事情-它返回到上一个 活动:活动A。但活动A的流程仍然不存在(它 崩溃!),因此系统将重新启动它,并可以重建其功能 以前的州

讨论的关键:作为一种理念,Android试图让人感觉所有的应用程序都在一直运行,作为这一理念的一部分,它试图从最新的角度尽可能地恢复。类似的问题可能会有所帮助

例如,用户可能正在浏览web,单击youtube链接 启动youtube应用程序,然后单击共享按钮启动他们的应用程序 喜爱的社交网络应用程序,并发布视频链接。就这些 同一任务的一部分;如果用户按下几次,他们将 返回浏览器中他们开始的页面

一旦启动社交网络应用程序,系统可能会决定 它的内存不足,它将杀死 浏览器释放更多信息的过程。(毕竟,它不是在前面和后面 用户不会注意到。)当用户按下后退按钮 返回重新启动的浏览器活动并重建 用户离开它的最后一个状态。在最坏的情况下,用户会体验到 事情重新初始化时的短暂延迟

但是,恢复先前活动状态的事件序列是相同的 即使在同一个应用程序中,也可能在同一个过程中发生。在你的 场景中,活动B因崩溃而关闭。那么这个系统呢 做它一直做的事情-它返回到上一个 活动:活动A。但活动A的流程仍然不存在(它 崩溃!),因此系统将重新启动它,并可以重建其功能 以前的州


讨论的关键:作为一种理念,Android试图给人一种所有应用程序都在运行的感觉,作为这一理念的一部分,它试图从尽可能低的点进行恢复。

调用Integer.parseInt(“Güzelim”);在启动活动之前,在您的on create methodcall Integer.parseInt(“Güzelim”)中使用try-catch来处理此异常;在开始您的活动之前,在您的on create方法中使用try-catch来处理此异常谢谢,我理解这一点,但我希望有人解释一下我的代码的工作原理。我是说为什么会发生在幕后?每个活动是否在单独的流程中运行?我只是不明白为什么整个应用程序没有崩溃,只是它的一部分(MainActivity)。谢谢,我明白,但我想有人解释一下为什么我的代码可以正常工作。我是说为什么会发生在幕后?每个活动是否在单独的流程中运行?我只是不明白为什么整个应用程序没有崩溃,只是它的一部分(MainActivity)。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
           // This will throw exception
        Integer.parseInt("Güzelim");

        Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
        startActivity(intent);
    }
});
}