5

Firebase Realtime Databaseの一部のデータにkeepSynced()を使用することを検討しています。私はそれが自動的にそれらのパスを同期することを理解します。しかし、それはAndroidのライフサイクルにどのように関係していますか?ユーザーがすべてのアクティビティを終了すると(通常のリスナーはすべて切断されます)、同期が停止しますか?私は、アプリがデータやバッテリーになることを望んでいません。AndroidとFCMでバックグラウンドでkeepSynced()を処理する

一方、FCM通知が届いたらキャッシュデータを更新したいと思います。私はFirebaseに接続するいくつかのサービスを立ち上げることができます。 keepSynced()にあるすべてのパスを同期し、同期させたら停止したいと思います。私はそれを達成する方法がわかりません。パスの1つにリスナーを作成し、サービスをしばらく実行し続けますか?サービスが終了したら、同期を停止しますか?ここ

答えて

5

firebaser

グレート質問!

アクティブなアクティビティがない場合、オペレーティングシステムはFirebaseデータベースへの接続をいつでも閉じることができます。私たちのSDKはそれを防ぐつもりはありませんが、に再接続します。

2番目の段落で説明しているのは、プッシュ通知(通常はサイレントFCMデータメッセージ)を送信してデータの同期をトリガーする「プッシュトゥーシンク」です。

私は昨年のI/Oアプリでそのようなことをしました。私たちが望んでいたよりもはるかに複雑でしたが、うまく機能しました。その場合は、goOnline()goOffline()(iircで5分後)と明示的に接続を管理しました。メインの同期コードはthe IOSched github repoにあります。

+0

答えをいただきありがとうございます。私は2つのフォローアップの質問を持っています: 1)あなたは「システムはいつでも接続を閉じるかもしれない」と言います。それは大丈夫ですが、どれくらいの時間がかかるのか経験から知っていますか? (バッテリーとデータ消費量で測定) 2)バックグラウンドサービスを開始し、そこにgoOnline()を呼び出し、5分後にgoOffline()を呼び出すと、マークされたパスが同期されますas keepSynced()? –

+0

1)いいえ、私はまともな評価基準を得ることはできませんでした。 2)私は確かに私たちがIOSchedで正確にそれをしたと思ったが、私は今、それのための特定のコードを見つけることができません。 :/ –

+0

2)OK、私はいくつかの実験を行い、あなたに知らせます。 –

関連する問題