2016-11-06 4 views
0

Ich bin ein Android-Entwickler, und ich entschied mich Realm in meiner App zu verwenden.Realm non looper thread mit Rückruf

Ich implementierte Push-Benachrichtigung, also wenn ich einen Push vom Server bekomme, möchte ich die Datenbank aktualisieren und Benachrichtigung erhalten, wenn das Festschreiben beendet ist. Ich habe versucht Realm.executeTransactionAsync, aber es bekam keinen Rückruf, wenn es fertig ist, denke ich, weil es von einem Nicht-Looper-Thread geöffnet wurde. So versuchte ich Realm.executeTransaction (Transaktion, Callback) Aber es war veraltet auf ver 1.0.0, so dass ich es nicht verwenden kann.

So, jetzt benutze ich ver 1.0.0, aber ich kann nicht verstehen, wie kann ich einen Erfolg Rückruf für eine Transaktion innerhalb non looper Thread wie ein Service bekommen?

Antwort

0

Erstens - der UI-Thread ist standardmäßig mit einer Looper verknüpft. Sie können überprüfen, indem Sie realm.isAutoRefresh() anrufen.

Nach der API Sie verwenden können:

realm.executeTransactionAsync(new Realm.Transaction() { 
     @Override 
     public void execute(Realm realm) { 

     } 
    }, new Realm.Transaction.OnSuccess() { 
     @Override 
     public void onSuccess() { 

     } 
    }, new Realm.Transaction.OnError() { 
     @Override 
     public void onError(Throwable error) { 

     } 
    }); 
+0

Vielen Dank für die Antwort, ich schon versucht executeTransactionAsync aber die OnSuccess nie genannt. –

+0

Überprüft und es hat funktioniert. Bitte poste deinen Code ('onReceive()' Methode) – YossiF

Verwandte Themen