私のアプリケーションの各フラグメントには、独自のFirebaseリスナのセットがあります。アクティブなフラグメントが変更されるとこれらは不要になりますが、リスナーはバックグラウンドで継続します。それに加えて、これらの古いリスナーは、前のFragmentのView更新をトリガーし、アプリケーションをクラッシュさせる可能性があります。ですから、断片が変わったら、整頓してリスナーを掃除したいと思います。私はどのようにわかっていませんが、私は代替的な解決策を持っています。私はあなたの考えや提案について興味がありました。フラグメントの変更時にFirebaseリスナーを連続的に削除する
リスナー関数は、例えば、フラグメントonCreate
に呼び出されます。
fuSetListener();
これらの関数は、検索して、グローバル変数にデータを保存します。私は、リスナーを削除すべきかどうかを確認するためにif文これを実行FirebaseリスナーのonDataChange
で
:
if(getActivity()==null){
reference.removeEventListener(this);
} else {
// Perform necessary onDataChange actions
}
そこで問題が発生し、getActivity()
は断片のみが変更された場合にはnull
を返すのですか?またはgetActivity()
null
を戻して、フラグメントを変更せずに自分のフラグメントの目的を壊すことはありませんか?
私はこの方法を2,3回適用しましたが、まだ問題に陥っていませんが、先に進む前に確認したいと思いました。