我的OnCreate方法(在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) {
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
startActivity(intent);
// This will throw exception
Integer.parseInt("Güzelim");
}
});
}
单击按钮时,应用程序崩溃;显示对话框“遗憾的是app已经停止”。单击确定按钮时,将显示DetailsActivity屏幕。为什么会这样?我希望整个应用程序崩溃。
答案 0 :(得分:0)
@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);
}
});
}
这会导致整个应用程序崩溃。
答案 1 :(得分:0)
应用程序崩溃是因为您正在尝试将String转换为Integer,这会抛出NumberFormatException。
答案 2 :(得分:0)
This answer对类似的问题可能有所帮助
例如,用户可能正在浏览网页,点击YouTube链接 启动youtube应用程序,然后单击共享按钮以启动它们 最喜欢的社交网络应用程序并发布视频链接。这是所有的了 同一任务的一部分;如果用户按下几次他们会 回到他们开始的浏览器中的页面。
启动社交网络应用后,系统可能会决定 它在内存上运行不足,它会杀死它 浏览器释放更多内容的过程。 (毕竟,它不在前面而且 用户不会注意到。)当用户按下后退按钮时 返回浏览器它重新启动的活动并重建 用户离开的最后状态。在最坏的情况下,用户体验到 事情重新初始化的短暂延迟。
但是同样的事件序列恢复了之前的Activity状态 甚至可以在同一个过程中的同一个应用程序中发生。在你的 方案,活动B因崩溃而关闭。所以系统 完全按照它的做法 - 它返回到前一个 活动:活动A.但活动A的过程仍然存在(它 崩溃!)所以系统重新启动它,它可以重建它 以前的状态。
讨论的关键:作为一种哲学,Android试图让人觉得所有应用程序一直在运行,作为这种理念的一部分,它试图从最可能的角度恢复。