我的活动onResume()从启动它的Intent中读取一些“额外”数据并相应地更新UI。
我想添加错误处理:如果Intent中的数据丢失/损坏,活动会显示Toast并完成。
我可以简单地在onResume()方法中调用finish()吗?我担心一些意想不到的事情,因为两者都与生命周期有关。
如果还有其他更好的方法,我也对这些感兴趣,但上面的内容似乎最简单。
谢谢!
答案 0 :(得分:5)
通过在随时调用finish()而不会产生任何不利影响,可以安全地自行终止。
显然你必须确保在调用finish()之前已经保存了所有必需的设置/数据,但这完全是你的责任,基于你的Activity设计。
答案 1 :(得分:1)
在finish()
中呼叫onResume()
应该没问题。但为什么要在onResume()
而不是onCreate()
中进行错误处理?
答案 2 :(得分:0)
直接从finish()
,onActivityResult()
或onResume()
致电onPostResume()
时,我遇到了无法预料的结果。这是在Nexus 7上安装了Android 4.4.2。
我找到的解决方案是稍后使用finish()
调用Runnable
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
setResult(RESULT_OK);
finish();
}
});
}
}