Android生命周期:在onStart()或onResume()中填写活动中的数据?

pjv*_*pjv 7 lifecycle android dialog onstart onresume

您是否应该通过光标获取数据并填写屏幕上的数据,例如设置窗口标题,onStart()onResume()

onStart()似乎是合乎逻辑的地方,因为在onStart()活动已经可以显示之后,尽管在后台.值得注意的是,我遇到了托管对话框的问题,这让我重新考虑了这一点.如果用户旋转屏幕,而对话仍然是开放的,onCreateDialog()并且onPrepareDialog()被称为之间 onStart()onResume().如果对话框需要基于您之前需要拥有数据的数据onResume().

如果我是正确的onStart()那么为什么Notepad示例通过这样做给出了一个坏的例子onResume()?请参阅http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html NoteEditor.java第176行(title = mCursor.getString...).

此外,如果我的Activity启动另一个Actvity/Dialog,它会更改我的光标正在跟踪的数据.即使在最简单的情况下,这是否意味着我必须手动更新我之前的屏幕(主要活动中的对话框的监听器),或者我必须注册ContentObserver,因为我不再更新数据onResume()(虽然我当然可以更新两次)?

我知道这是一个基本的问题但是最近的对话令我意外,让我意识到这一点.

Squ*_*onk 2

要回答有关 NoteEditor 的问题,只需看一下您引用的那一行上方的行,您就会看到...

    // Requery in case something changed while paused (such as the title)
    mCursor.requery();
Run Code Online (Sandbox Code Playgroud)

评论似乎已经解释了一切。虽然我自己没有完成 NotePad 示例,但作者似乎正在构建在 NoteEditor 暂停(然后恢复)时从更改中恢复的能力。

正如 GSree 所解释的(当我输入此内容时),没有正确或错误的答案,它仅取决于 Activity 生命周期的哪个点需要完成什么操作。