ネットワーク操作を完了するために Robospice を使用しています。Robospice では、SpiceService
(android サービス クラスの拡張) をフラグメントのonAttach()
メソッドで開始することを推奨しています。
SpiceManager
他の解決策は、自分自身を取得しFragment.onAttach(...)
て解放する2番目のアプローチを使用することSpiceManager
ですFragment.onDetach()
https://github.com/stephanenicolas/robospice/wiki/Advanced-RoboSpice-Usages-and-FAQ
だから私はそうしようとしてきましたが、.onAttach()
でフラグメントを使用すると、フラグメントのメソッドがまったく呼び出されないことがありますViewpager
。この問題を示す github リポジトリを作成しました。
https://github.com/Winghin2517/ViewPagerFragmentSample
私の github リポジトリには、3 つのフラグメントと 1 つのビューページャーがあります。各フラグメントのメソッドが呼び出されたときにログを記録し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
サポート ライブラリを使用しているにもかかわらず、 API 23 に対して呼び出されたときpublic void onAttach(Context context)
(これは "onAttachedContext" としてログに表示されます) と 23 未満の API に対して呼び出されたとき(これは "onAttachedActivity" としてログに表示されます) の両方をログに記録しています。 public void onAttach(Activity activity)
23.
onAttach
アプリが起動するたびに3 つのフラグメントのすべてのメソッドが呼び出されることはめったにありません。つまり、ネットワーク操作用の robospice サービスも開始されず、アプリがハングしたままになることがあります。
アプリが開始時にすべてのフラグメントに対してすべての onAttach メソッドを呼び出すようにするにはどうすればよいですか?