How To Use Room And Databases Without Livedata In Android?
Solution 1:
How can I retrieve data from my database without using the LiveData concept?
Don't use LiveData as a return type from your DAO methods.
As far as I know queries shouldn't be on the main-thread. So I would have to put it in an asyncTask
It would be much better for you to use LiveData, Kotlin coroutines, or RxJava than AsyncTask. Even a plain Thread or single-thread Executor would be better, given that this code seems to be in a repository and not tied to the UI.
In particular, any time you use AsyncTask with only doInBackground(), there was no need to use AsyncTask in the first place, compared to a simple thread. The only reason to use AsyncTask is because you need onPostExecute() to do some work on the main application thread.
And, since AsyncTask is considered to be obsolete, I really encourage you to use something else. Room has built-in support for LiveData, Kotlin coroutines, and RxJava.
If I fire two or more queries at the same time I need a mechanism to ensure that all asyncTasks have finished like a onFinishedAllLoadingListener. What is the best way to do this?
In your case, just put them in a single thread. Your code will not have two or more queries at the same time anyway, as AsyncTask uses a single background thread by default.
In terms of other likely solutions:
With Kotlin coroutines, probably
async()andawait()are the simplest optionsWith RxJava, as EpicPandaForce suggested, use the
zip()operatorWith
LiveData, use a library that offers azip()operator, or create your own
Post a Comment for "How To Use Room And Databases Without Livedata In Android?"