我的问题:是否可以阻止活动在创建时调用OnResume()
?正如我在OnCreate()
和onStart()
方法运行后看到的那样,下一个是onResume()
,但是当我从暂停状态恢复活动时我只想拥有它。
为什么我需要这个:我启动我的活动(FragmentActivity
,所以让我们说OnPostResume()
)从一个需要大约2-3s的线程开始准备好来自外部数据库的数据。线程完成后,我调用一个需要这些数据的方法,我想在每次活动可见时调用它。该线程仅在创建FragmentActivity时运行(onCreate()
),并且我无法将该方法放入onResume()
,因为onResume()
将在线程完成其任务之前运行。所以它会收到未准备好的数据。
任何人都有更好的主意?
答案 0 :(得分:0)
我不明白这个的目的,但这是一个可能的解决方案:
如果您只希望在之前没有onCreate的状态下获得onResume的偶数,只需使用标志。
在onCreate中,将其设置为true,在onResume中检查标志(并将其设置为false)。如果是真的,那就意味着之前调用了onCreate。
答案 1 :(得分:0)
我个人更愿意检查结果是否可用,而不是总是在onResume
中执行getter-code。如果用户以某种方式在后台线程完成之前恢复您的活动,则您可以在onResume
上进行呼叫,但不希望显示结果。
如果值已经缓存在某处,那么计算/获取线程中的值并让线程立即返回(并导致值被填充)可能是个好主意。这样,您只需要一个入口点(线程)来更新UI而不是两个(线程和onResume
方法)。
答案 2 :(得分:0)
不确定这个的确切应用,但我会提出建议。
如果您使用AsyncTask
,则可以将其发送以获取所需数据,并使用onPostExcecute()
方法调用需要数据的方法或根据需要更新视图。 (它在UI线程上运行)
如果您在某些情况下碰巧已经拥有了所需的数据,您还可以绕过AsyncTask并直接更新视图。
可以使用onResume()
方法触发此AsyncTask。
如果我遗失了什么,请告诉我,我可以调整我的建议。