私のアプリは、しばらくの間、バックグラウンドに置かれた後にFirebase Realtime Databaseへの接続を失います...つまり、バックグラウンドで、Realtime Databaseサービスが機能しなくなり、電話機の設定でアプリデータをクリアしてすべて正常に戻すまで...私は同様のケースについて読んで、AndroidがFirebaseとリソース(ソケット接続)を破壊したことを知った特定の期間、バックグラウンドに置く。しかし、アプリケーションに戻った後に接続を復元するための簡単な解決策はありませんでした。しばらくの間、アプリケーションをバックグラウンドで終了した後、Firebaseリアルタイムデータベースへの接続が切断されます
答えて
表示されているアクティビティがない場合、アプリケーションはソケット接続を失うことが予想されます。それがFirebase SDKの仕組みです。また、Androidは積極的にバックグラウンドアプリケーションを一時停止し、ユーザーが積極的に使用していないときにデータやバッテリーを消費しません。
アクティビティが再び開始されると、Firebase SDKはサーバーとの通信に使用するWebSocketを復元しようとします。このWebSocketは、SDKによって完全に管理されています。再接続するために何かをする必要はありません。
まあまあそれは再接続しません...すべてのデータリスナーと書き込みの試みは機能していません。 –
それ以外の場合は、多くのアプリがそこに分割されます。デバッグログをオンにして、何が起きているかの詳細情報を取得します。 'FirebaseDatabase.getInstance()。setLogLevel(Logger.Level.DEBU G)' –
- 1. Android BLEは切断後にバックグラウンドで接続します
- 2. SSE接続が確立された直後にSignalRサーバがUnityクライアントへの接続を終了しました
- 3. スイッチング後にマルチペラ接続セッションが切断されました
- 4. FTPドライブをマウントした後、ネットワークドライブの接続が切断されました
- 5. スクリプト内で接続が終了し、コマンドが打ち切られました
- 6. OLEDBへの接続を開くとコードが終了します
- 7. 接続が切断された後にDBが再接続しない
- 8. インターネット接続が切断されました。リクエストを提出した後
- 9. PeerJS:iceConnectionStateが切断されました。[ユーザーID]への接続が閉じられました。
- 10. KubernetesのJenkinsスレーブの接続が切断されました。
- 11. 接続されたデータグラムソケットを切断して再接続する
- 12. 余分なディスプレイに接続した後、macvimを起動できず、接続が切断されました。
- 13. iOSのバックグラウンド更新がしばらくして終了する
- 14. Firebaseリアルタイムデータベースの初回接続に時間がかかります
- 15. Webサービスクライアントの接続が切断されました
- 16. GCP Bigtable Pythonクライアントの接続が切断されました
- 17. インターネット接続が切断された後の依存関係エラー
- 18. サーバで切断/強制終了TCPの接続
- 19. Android:方向変更後にフラグメント間の接続が切断されます
- 20. 接続が切断された場合、MSSQLは接続を選択します
- 21. XPC接続が中断されました。 [共通] iOS 10のシステムアプリがないため終了します
- 22. .NETウィンドウでSQL接続を開くアプリケーションが開始され、終了しない
- 23. アプリケーションが正しく終了せず、バックグラウンドで実行されています
- 24. 切断されたネットワークドライブの再接続
- 25. WebSocket接続が数秒後に切断されます
- 26. GKE + WebSocket + NodePort 30s接続が切断されました
- 27. SSIS接続が切断されました
- 28. キーボードが接続/切断されたときのWin32の判断
- 29. iOS外部アクセサリアプリケーションがバックグラウンドになると接続が切断されます
- 30. Firebaseリアルタイムデータベースへのアクセスが完了していませんか?
テスト対象のデバイスまたはエミュレータのAPIレベルは? –
APIレベルは24です。 –
Firebaseバージョン11.2.2を使用して構築されたテストアプリケーションを使用して、API 24エミュレータを使用して問題を再現しようとしました。アイドル状態([Doze Mode](https://developer.android.com/training/monitoring-device-state/dozestandstand.html))で強制的に変更するために 'adb'コマンドを使用しました。私がしたいくつかのテストでは、Dozeモードを終了するとwebsocket接続が常に再確立されました。アプリがバックグラウンドで接続されている必要がない場合は、 'onStop()'メソッドですべてのリスナーを削除し、 'onStart()'でそれらを再接続することを検討してください。これで、Firebaseはバックグラウンドで1分後に正常に切断されます。 –