2017-11-03 7 views
4

Wir können Firestore veranlassen, Datensätze in den lokalen Cache herunterzuladen und diese Datensätze lesen. Es ist uns jedoch nicht möglich, einen Datensatz zu aktualisieren und keinen neuen Datensatz hinzuzufügen.Firestore Offline Schreiben/Hinzufügen funktioniert nicht

Haben sogar einige der gleichen Code (https://github.com/firebase/quickstart-android) versucht, aber scheinen nicht in der Lage zu sein, die offline schreiben/einfügen arbeiten - nur lesen.

Wenn wir nennen diese Funktion offline wird es genannt OnFailureListner und löst eine Ausnahme

@Override 
public void onRating(Rating rating) { 
    // In a transaction, add the new rating and update the aggregate totals 
    addRating(mRestaurantRef, rating) 
      .addOnSuccessListener(this, new OnSuccessListener<Void>() { 
       @Override 
       public void onSuccess(Void aVoid) { 
        Log.d(TAG, "Rating added"); 

        // Hide keyboard and scroll to top 
        hideKeyboard(); 
        mRatingsRecycler.smoothScrollToPosition(0); 
       } 
      }) 
      .addOnFailureListener(this, new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 
        Log.w(TAG, "Add rating failed", e); 

        // Show failure message and hide keyboard 
        hideKeyboard(); 
        Snackbar.make(findViewById(android.R.id.content), "Failed to add rating", 
          Snackbar.LENGTH_SHORT).show(); 
       } 
      }); 
} 

Antwort

-2

Sie können nicht einfach Daten offline schreiben, weil Firestore die Daten erhalten können und es laden whenb Sie eine Internetverbindung haben (die erfordert, dass eine Aufgabe im Hintergrund ausgeführt wird). Firestore hat seine Offline-Funktionen verbessert. Sie können jedoch jederzeit einen eigenen Dienst zum Hochladen erstellen, wenn das Gerät eine Verbindung herstellt.

Mit Android können Sie Dienste erstellen. Von developer.android.com:

Ein Dienst ist eine Komponente, die im Hintergrund läuft lang laufende Operationen auszuführen oder arbeiten für Remote-Prozesse durchzuführen. Ein Service bietet keine Benutzeroberfläche. Beispielsweise kann ein Dienst Musik im Hintergrund wiedergeben, während sich der Benutzer in einer anderen -Anwendung befindet, oder Daten über das Netzwerk abrufen, ohne die Benutzerinteraktion mit einer Aktivität zu blockieren. Eine andere Komponente, z. B. eine -Aktivität, kann den Dienst starten und ihn ausführen lassen oder daran binden, damit er mit der interagieren kann. Ein Service ist als eine Unterklasse von Service implementiert.

So könnte man eine Service schaffen, die für eine Internetverbindung hält wartet und ruft nur die FirebaseFirestore Objekt alle Daten, die Sie hochladen wollen.

Dies kann Ihnen helfen, das ist die offizielle Android Informationen zu Service: https://developer.android.com/guide/components/services.html

+1

Dank. Ich denke, es hat etwas mit der Verwendung von Transaktionen zu tun, die offline nicht unterstützt werden. Das Batch-Update scheint zu funktionieren. Was ist die richtige Methode? –

Verwandte Themen