我構建了一個適用於Android操作系統的聊天工具,並且我希望始終能夠連接到Firebase。我的建議是實施後臺服務,檢測從Firebase斷開連接並斷開連接後重新連接。 我的服務的代碼:保持Firebase連接
public class FirebaseConnection extends Service {
DatabaseReference connectedRef;
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
connectedRef.goOnline();
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
該解決方案還不夠,我看到,短期內它斷開後重新連接,但幾個小時後,無法重新連接和連接結束。
請幫我找到解決方案
當應用程序未處於活動狀態時,不要嘗試保持數據庫連接處於活動狀態。雖然它在構建時可能會起作用,但它可能會在其他設備上失敗(如果不是現在,那麼在未來的Android版本中)。當一個應用程序不活動時,它不應該保持網絡連接打開。要在應用程序處於非活動狀態時與其通信,請使用Firebase Cloud Messaging。 –
我可以實現定期goOnline保持連接? –