我一直致力于将我的应用程序从多个活动更改为单个活动和多个片段。我有多个片段和单个活动A.
以下是应用程序有多个活动时的情况。
onResume()
方法中发送请求,并且正在取消onPause()
方法中的请求和计时器,因为只有可见活动发送请求而其他人没有。onSaveInstanceState(Bundle savedInstanceState)
中保存了一个布尔值,以检查请求是否是第一次发送。只有这是我第一次显示进度条然后绘制视图。如果不是(如果活动从后台堆栈恢复),则不显示进度条,并且仅在成功响应时更新UI。onPause()
方法取消了Web服务请求。在活动B的onResume()
中,再次调用了一个Web服务,显示了进度条(因为它是第一次加载活动)并且绘制了视图。工作与活动A类似。onResume()
方法发送的。这次我检查savedInstanceState是否为空,因此我没有显示进度条(允许用户继续前进到acitivy B和上)。以下是我在实施Single Activity和Multiple片段后正在做的事情。
我该怎么做?在此先感谢!!
答案 0 :(得分:0)
这是我的建议:
对于webservice轮询创建无头片段,请参阅:http://www.vogella.com/articles/AndroidFragments/article.html
此片段将添加到您的第一个活动中,无头片段的作用是每隔60秒轮询一次Web服务,就像您现在一样。
此时不再需要布尔值,只需执行findFragmentByTag(TAG_OF_HEADLESS_FRAGMENT)并检查它是否为null,以确定它是否是第一次启动Activity。
现在,要知道在更新UI时需要实现片段回调模式的现在可见的片段,请参阅:http://developer.android.com/training/basics/fragments/communicating.html
通过回调,通信流程将类似于:
WebPollFragment -> Activity -> B When fragment B is in focus
WebPollFragment -> Activity -> C When fragment C is in focus
WebPollFragment -> Activity -> D And so on...
这也说明了我的最终建议,即在我看来你应该互相替换片段(你可以用无头片段做背景工作)。
希望这能让你顺利上路。