6

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

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

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

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

谢谢!

4

3 回答 3

5

Activity 可以随时通过调用 finish() 自行终止,不会产生任何不利影响。

显然,您必须确保在调用 finish() 之前保存了所有必需的设置/数据,但这不言而喻,完全是您的责任,具体取决于您的 Activity 设计。

于 2011-05-10T16:35:19.420 回答
1

打电话应该没问题finish()onResume()但是为什么你在中onResume()而不是在中进行错误处理onCreate()呢?

于 2011-05-10T15:29:04.753 回答
0

finish()直接从或调用时onActivityResult(),我遇到了不可预知的结果。这是在带有库存 Android 4.4.2 的 Nexus 7 上。onResume()onPostResume()

我找到的解决方案是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();
            }
        });
    }
}
于 2014-04-28T12:55:20.077 回答