1

我的问题:是否可以防止OnResume()在创建活动时调用它?正如我在OnCreate()andonStart()方法运行后看到的那样,下一个是onResume(),尽管我只想在从暂停状态恢复活动时拥有它。

为什么我需要这个:我启动我的活动(FragmentActivity可以说OnPostResume())从一个线程开始,该线程需要大约 2-3 秒才能准备好从外部数据库获取数据。线程完成后,我调用一个需要这些数据的方法,并且我想在每次活动可见时调用它。线程仅在创建 FragmentActivity ( onCreate()) 时运行,并且我无法将该方法放入其中,onResume()因为onResume()在线程完成其任务之前将运行方式。所以它会收到未准备好的数据。

有人有更好的主意吗?

4

3 回答 3

0

我不明白这样做的目的,但这是一个可能的解决方案:

如果您只希望在之前没有 onCreate 的状态上获得 onResume 的偶数,只需使用一个标志。

在 onCreate 中,将其设置为 true,在 onResume 中检查标志(并将其设置为 false)。如果为真,则表示之前调用了 onCreate。

于 2013-08-02T19:23:17.737 回答
0

不确定这个的确切应用,但我会提出一个建议。

如果您使用AsyncTask,则可以将其发送出去以获取所需的数据,并且在onPostExcecute()方法中您可以调用需要数据的方法或根据需要更新视图。(它在 UI 线程上运行)

如果您碰巧已经拥有在某些情况下需要的数据,您也可以绕过 AsyncTask 并直接更新视图。

这个 AsyncTask 可以在onResume()方法中触发。

如果我遗漏了什么,请告诉我,我可以调整我的建议。

于 2013-08-02T19:50:23.100 回答
0

我个人更愿意检查结果是否可用,而不是总是在onResume. 如果用户在后台线程完成之前以某种方式恢复了您的活动,您将调用 on onResume,但不想显示结果。

如果值已经缓存在某个地方,那么计算/获取线程中的值并让线程立即返回(并导致值被填充)可能是一个好主意。这样,您将只有一个入口点(线程)来更新您的 UI,而不是两个(线程和onResume方法)。

于 2013-08-02T19:27:57.033 回答