片段可见性

时间:2014-04-22 15:06:32

标签: android android-fragments visibility

很多线程都会问如何运行代码或获取片段的可见性。 但我想知道“为什么”片段:onResume()和onStart()对用户来说是“不可见的”,尽管文档声明它应该对用户可见。

来自:http://developer.android.com/reference/android/app/Fragment.html#Lifecycle

  

onStart()使片段对用户可见(基于其启动的包含活动)。   onResume()使片段与用户交互(基于其包含的活动被恢复)。

http://developer.android.com/reference/android/app/Fragment.html#onResume() 和onStart()就此问题清楚地描述:

  

当片段对用户可见并且正在运行时调用。这通常与包含Activity的生命周期的Activity.onResume相关联。

虽然我明确看到没有片段,直到onResume完成之后。所以问题仍然存在:'为什么'片段仅在onResume之后'可见'。而不是按照doc的onStart? 哦,以及对此的扩展:我没有使用ViewPager ..只是一个简单的Activity-Fragment模型。

希望任何人对此有一些了解......

[更新*] 我添加了一个示例项目,其中包含一个活动和一个显示问题的片段。任何人都可以尝试; - )

https://www.dropbox.com/s/08noqvmq7sjwppb/fragmentUserVisibilityTest.zip

1 个答案:

答案 0 :(得分:0)

也许,你的onStart()中有一个长时间运行的操作,它发生在主线程中。在这种情况下,在此操作结束之前,您将看不到任何内容。在调用onResume时发生这种情况。考虑使用AsyncTask进行长时间操作。

当片段即将显示时会调用

onStart(),当片段即将可交互时调用onResume() 。这与活动相同。

onStart()onResume()如果在片段变得可见/可互动后被称为,则没用。