如何安全地完成onResume()方法中的Activity?

时间:2011-05-10 15:17:51

标签: android activity-lifecycle

我的活动onResume()从启动它的Intent中读取一些“额外”数据并相应地更新UI。

我想添加错误处理:如果Intent中的数据丢失/损坏,活动会显示Toast并完成。

我可以简单地在onResume()方法中调用finish()吗?我担心一些意想不到的事情,因为两者都与生命周期有关。

如果还有其他更好的方法,我也对这些感兴趣,但上面的内容似乎最简单。

谢谢!

3 个答案:

答案 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();
            }
        });
    }
}