Which one to use in Room: LiveData or RxJava?
up vote
3
down vote
favorite
I am using Room for my Database management and I was confused in what to use while working with real-time data. For now, to manage real-time data I am using Flowable
and am I pretty satisfied with it. What I was confused is I can use LiveData
as well to do the same operation.
To give some context, here is how I am querying data and updating my view.
Flowable
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
LiveData
userDao().getUsersLiveData()
.observe(this, users ->
userAdapter.setUsers(users)
)
I am not much familiar with LiveData
, but as far as my research goes it is an observer pattern that is also lifecycle aware, meaning that I will stop notifying if UI is not in active state. That said, as you can see in my Flowable
code, I am adding it to CompositeDisposable
and I will dispose in my onDestroy()
method.
So I don't see point of why I should use LiveData
when I can manage everything with RxJava
, which has a lot of operators for convenience.
So when should I use LiveData
and when RxJava
while working with Room. Answers reflecting given scenario is much appreciated, but other use cases are also welcomed.
I followed When to use RxJava in Android and when to use LiveData from Android Architectural Components?, but it's too broad and I couldn't get answer specifically in my case
rx-java rx-java2 android-room observer-pattern android-livedata
add a comment |
up vote
3
down vote
favorite
I am using Room for my Database management and I was confused in what to use while working with real-time data. For now, to manage real-time data I am using Flowable
and am I pretty satisfied with it. What I was confused is I can use LiveData
as well to do the same operation.
To give some context, here is how I am querying data and updating my view.
Flowable
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
LiveData
userDao().getUsersLiveData()
.observe(this, users ->
userAdapter.setUsers(users)
)
I am not much familiar with LiveData
, but as far as my research goes it is an observer pattern that is also lifecycle aware, meaning that I will stop notifying if UI is not in active state. That said, as you can see in my Flowable
code, I am adding it to CompositeDisposable
and I will dispose in my onDestroy()
method.
So I don't see point of why I should use LiveData
when I can manage everything with RxJava
, which has a lot of operators for convenience.
So when should I use LiveData
and when RxJava
while working with Room. Answers reflecting given scenario is much appreciated, but other use cases are also welcomed.
I followed When to use RxJava in Android and when to use LiveData from Android Architectural Components?, but it's too broad and I couldn't get answer specifically in my case
rx-java rx-java2 android-room observer-pattern android-livedata
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I am using Room for my Database management and I was confused in what to use while working with real-time data. For now, to manage real-time data I am using Flowable
and am I pretty satisfied with it. What I was confused is I can use LiveData
as well to do the same operation.
To give some context, here is how I am querying data and updating my view.
Flowable
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
LiveData
userDao().getUsersLiveData()
.observe(this, users ->
userAdapter.setUsers(users)
)
I am not much familiar with LiveData
, but as far as my research goes it is an observer pattern that is also lifecycle aware, meaning that I will stop notifying if UI is not in active state. That said, as you can see in my Flowable
code, I am adding it to CompositeDisposable
and I will dispose in my onDestroy()
method.
So I don't see point of why I should use LiveData
when I can manage everything with RxJava
, which has a lot of operators for convenience.
So when should I use LiveData
and when RxJava
while working with Room. Answers reflecting given scenario is much appreciated, but other use cases are also welcomed.
I followed When to use RxJava in Android and when to use LiveData from Android Architectural Components?, but it's too broad and I couldn't get answer specifically in my case
rx-java rx-java2 android-room observer-pattern android-livedata
I am using Room for my Database management and I was confused in what to use while working with real-time data. For now, to manage real-time data I am using Flowable
and am I pretty satisfied with it. What I was confused is I can use LiveData
as well to do the same operation.
To give some context, here is how I am querying data and updating my view.
Flowable
addDisposable(userDao().getUsersFlowable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(users -> userAdapter.setUsers(users)));
LiveData
userDao().getUsersLiveData()
.observe(this, users ->
userAdapter.setUsers(users)
)
I am not much familiar with LiveData
, but as far as my research goes it is an observer pattern that is also lifecycle aware, meaning that I will stop notifying if UI is not in active state. That said, as you can see in my Flowable
code, I am adding it to CompositeDisposable
and I will dispose in my onDestroy()
method.
So I don't see point of why I should use LiveData
when I can manage everything with RxJava
, which has a lot of operators for convenience.
So when should I use LiveData
and when RxJava
while working with Room. Answers reflecting given scenario is much appreciated, but other use cases are also welcomed.
I followed When to use RxJava in Android and when to use LiveData from Android Architectural Components?, but it's too broad and I couldn't get answer specifically in my case
rx-java rx-java2 android-room observer-pattern android-livedata
rx-java rx-java2 android-room observer-pattern android-livedata
edited Nov 13 at 6:05
asked Nov 12 at 2:49
musooff
17612
17612
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Normally working with views it's often good to use LiveData. It automatically manages subscription, works really well with DataBinding library. it's sort of a data holder that is lifecycle aware as oppose to stream of data (Rx Concept).
In other cases I would suggest using RxJava which has powerful operator chains for transformation and concurrency. Hope it sheds some lights on your understanding.
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53255383%2fwhich-one-to-use-in-room-livedata-or-rxjava%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Normally working with views it's often good to use LiveData. It automatically manages subscription, works really well with DataBinding library. it's sort of a data holder that is lifecycle aware as oppose to stream of data (Rx Concept).
In other cases I would suggest using RxJava which has powerful operator chains for transformation and concurrency. Hope it sheds some lights on your understanding.
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
add a comment |
up vote
1
down vote
accepted
Normally working with views it's often good to use LiveData. It automatically manages subscription, works really well with DataBinding library. it's sort of a data holder that is lifecycle aware as oppose to stream of data (Rx Concept).
In other cases I would suggest using RxJava which has powerful operator chains for transformation and concurrency. Hope it sheds some lights on your understanding.
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Normally working with views it's often good to use LiveData. It automatically manages subscription, works really well with DataBinding library. it's sort of a data holder that is lifecycle aware as oppose to stream of data (Rx Concept).
In other cases I would suggest using RxJava which has powerful operator chains for transformation and concurrency. Hope it sheds some lights on your understanding.
Normally working with views it's often good to use LiveData. It automatically manages subscription, works really well with DataBinding library. it's sort of a data holder that is lifecycle aware as oppose to stream of data (Rx Concept).
In other cases I would suggest using RxJava which has powerful operator chains for transformation and concurrency. Hope it sheds some lights on your understanding.
answered Nov 13 at 6:19
Samuel Robert
3,23552034
3,23552034
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
add a comment |
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
I guess that answers my question. Thanks
– musooff
Nov 13 at 7:24
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53255383%2fwhich-one-to-use-in-room-livedata-or-rxjava%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown