我一直在使用 Robospice 来完成我的网络操作。在 Robospice 中,他们建议SpiceService
(android 服务类的扩展)在片段的onAttach()
方法中启动:
其他解决方案是使用第二种方法,即自己 进入
SpiceManager
并Fragment.onAttach(...)
释放SpiceManager
Fragment.onDetach()
https://github.com/stephanenicolas/robospice/wiki/Advanced-RoboSpice-Usages-and-FAQ
所以我一直在尝试这样做,但我发现有时onAttach()
当您使用带有Viewpager
. 我创建了一个显示此问题的 github 存储库:
https://github.com/Winghin2517/ViewPagerFragmentSample
在我的 github 存储库中,我有 3 个片段和一个 viewpager。onAttach
当每个片段的方法被调用并且结果不稳定时,我正在记录。关闭应用程序并重新启动它有时会产生这种情况:
12-27 12:55:17.085 8831-8831/? E/Fragment2: onAttachedActivity
12-27 12:55:17.085 8831-8831/? E/Fragment2: onAttachedContext
12-27 12:55:17.097 8831-8831/? E/Fragment1: onAttachedActivity
12-27 12:55:17.097 8831-8831/? E/Fragment1: onAttachedContext
或者只是这个:
12-27 12:56:30.018 8864-8864/? E/Fragment2: onAttachedActivity
12-27 12:56:30.022 8864-8864/? E/Fragment2: onAttachedContext
我正在记录public void onAttach(Context context)
调用 api 23 的时间(这在日志中显示为“onAttachedContext”)以及何时public void onAttach(Activity activity)
调用低于 23 的 api(这在日志中显示为“onAttachedActivity”),即使我正在使用支持库23.
每次应用程序启动时很少调用所有 3 个片段的onAttach
方法,这意味着我用于网络操作的 robospice 服务也没有启动,偶尔会导致应用程序挂起。
如何让应用程序在启动时为所有片段调用所有 onAttach 方法?