Was ist die beste Vorgehensweise zum Abrufen von Daten von Room SQLite von einem neuen Thread zum Haupt-UI-Thread in Android?Implementieren von SQLIte in einem neuen Thread
0
A
Antwort
1
Eine kleine Erinnerung: Diese AsyncTask-Lösung dient nur zur schnellen Implementierung für einige Abfragen. Wenn Sie viele verschiedene Abfragen haben, versuchen Sie nicht, eine Reihe von AsyncTask-Unterklassen zu erstellen. Sehen Sie sich den LiveData-Weg genauer an oder verwalten Sie selbst einen Thread.
Vorausgesetzt, dass Sie für die Liste aller Benutzer abfragen:
@Dao
public interface UserDao {
@Query("Select * FROM User")
List<User> findAll();
}
Probe async Aufgabe
private static class UserTask extends AsyncTask<Void, Void, List<User>> {
UserDao dao;
public UserTask(UserDao dao) {
this.dao = dao;
}
@Override
protected List<User> doInBackground(Void... voids) {
// this function runs in a background thread managed by system
return dao.findAll();
}
@Override
protected void onPostExecute(List<User> users) {
// This runs in UI thread after doInBackground return. Run your ui callback here
super.onPostExecute(users);
}
}
Verwandte Themen
- 1. Server-Socket in einem neuen Thread
- 2. Qt - Griff QTcpSocket in einem neuen Thread
- 3. Laden Fenster in einem neuen Thread
- 4. Implementieren Unterposition in SQLite
- 5. Ausführen von SQLite-Operationen in einem anderen Thread
- 6. Erstellen eines Formulars in einem neuen Thread von der Konsole
- 7. Verwenden von EJB oder Inject in einem neuen Thread
- 8. Öffnen eines neuen Fensters von einem externen Thread in Javafx
- 9. Aufruf Methode aus einem neuen Thread C
- 10. C# timer in neuen Thread
- 11. bestehende Thread in einem Threadpool erstellt einen neuen Thread mit neuem Thread(). Start()
- 12. Start in einem neuen Thread in der gleichen Methode
- 13. Drop-Marker auf neuen Thread
- 14. pid für neuen Thread
- 15. implementieren Instant-Thread-Suchalgorithmus
- 16. Ist SQLite-Thread in dieser Situation sicher?
- 17. Öffnen einer Sqlite-Datenbank in einem Hintergrund Thread
- 18. Erstellen JFrame in einem neuen Thread (neue messageloog)
- 19. Löschen von SMS aus Thread SQLite Exception
- 20. Implementieren Feuerwerkskörper Thread oncreate Methode
- 21. Senden Sie eine http-Anfrage in einem neuen Thread C++
- 22. Hintergrundprozess korrekt implementieren Thread in ASP.NET
- 23. RxJava 2 erstellen Liste in neuen Thread
- 24. Wie konstruiere ich eine Klasse in einem neuen Thread?
- 25. KeyListener in einem neuen Thread für Spiel Input Capture
- 26. Python - Wie Stack-Trace in einem neuen Thread zu bekommen
- 27. Warum wird das Abonnement nicht in einem neuen Thread ausgeführt?
- 28. Dienst in einem Thread vs. Thread in einem Dienst
- 29. "neuer Thread" startet keinen neuen Thread?
- 30. Android Stopp Runnable in neuen Thread erstellt
Die 2 häufigsten Möglichkeiten: 1. Verwenden Sie Livedata als Rückgabetyp für dao Abfragen. Der Raum kümmert sich automatisch um das Laden des Hintergrundfadens. 2. Setzen Sie die DAO-Abfrage in eine AsyncTask. Nicht sicher, ob das ist, was du fragst, also überlasse ich es als Kommentar. – reTs
Können wir eine Methode im UI-Thread innerhalb von AysncTask als Rückruf nach Datenabruf aufrufen? –
Natürlich. onPostExecute wird aufgerufen, nachdem die AsyncTask beendet und im UI-Thread aufgerufen wurde. – reTs