を閉じて、開いているために、複数回受信しました私の断片。ブロードキャストは、私は次のような問題を持って活動
// Broadcast receiver que recibe las emisiones desde los servicios
private class ResponseReceiverFragment extends BroadcastReceiver {
// Sin instancias
private ResponseReceiverFragment() {
}
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case "serv_connected":
MyService aux = activity.getmService();
mUserList = MyService.xmpp.getOnlineUsers();
iconloader.hide();
break;
}
}
}
この断片は、スライディングタブを有する3つの断片を含む活性の範囲内であり、まれなものではない。
問題は次のとおりです。 入力してブロードキャストアクティビティがトリガされると、フラグメントが正しく受信されます。 私が戻ってくると(アクティビティを閉じる)、再びアクティビティを開き、そのフラグメントがブロードキャストを2回受信するなど...
何が起こっているのですか? さらにコードが必要な場合は追加できます。
は、私は同じ問題を抱えていたし、本当に簡単solution.Iでそれを扱っあなた
私が想定しonPause()で登録解除レシーバーを取り外す際に私の問題は解決あなたのフラグメントはキャッシュされていないか状態が保存されていないので、Androidは 'onCreate()'を起動します - 'onCreate()'が呼び出されたときにいくつかのログインを追加してください。状態を管理する – brandall
状態を知ることができますか? 私が知っている、私は何も保持していないかキャッシング:-S .... しかし、それは安全ではありません。 どうすれば確認できますか? – daicon
'onCreate()'にログインを追加し、logcatを呼び出して呼び出された回数と呼び出された時刻を確認します。たとえば、タブ間を移動するたびに動きます。スライディングタブを使用してフラグメント状態を保存する方法に関する記事。 – brandall