首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓应用架构- RxJava

安卓应用架构- RxJava
EN

Stack Overflow用户
提问于 2015-12-20 19:39:33
回答 1查看 453关注 0票数 4

我正在开发一个android应用程序(基本上是试图使用RxJava/Android)。以下是我的要求:

  • 维护登录用户的持久全局状态。
  • 每当用户状态更改时,相应地更新视图。

我使用一个单例User实例来维护全局状态和SharedPreferences以实现持久性。现在,我试图使用RxAndroid通知视图的更改,但我不知道如何做到这一点。

我们如何跟踪User中的变化?我是否可以使用User中的设置器从可观察到的数据中发出数据;如果是的话,该如何处理呢?

如果任何人也能提供代码示例,我将非常感激。

这是我的User类定义的一个示例,我没有使用任何setter。

代码语言:javascript
复制
public class User {
  public String userName;
  public String emailId;
  public List<Friend> friends;

  public User() {
    friends = new ArrayList<Friend>();
  }
}

public class Friend {
  public String userName;
  public String emailId;
  public String role;
}

这只是我的用户类的一个示例框架(我已经去掉了所有其他内容),我只需要知道better在这些字段中的样子,以及这种方法是否被认为是正确的,或者是否有更好的替代方案。

如果你需要更多的信息,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-20 19:53:23

我将使用来自PublishSubject http://reactivex.io/RxJava/javadoc/rx/subjects/PublishSubject.html的RxJava和onResume/onPause,因为它是活动订阅/非子订阅的。

在用户内部创建PublishSubject

代码语言:javascript
复制
public class User {
  public PublishSubject<User> stream = PublishSubject.create()
  public String userName;
  public String emailId;
  public List<Friend> friends;

  public User() {
    friends = new ArrayList<Friend>();
  }
  public void setName(String name){
         stream.onNext(this);
  }
}

因此,当您使用用户类的方法setName时(正如您所提到的那样),订阅该蒸汽的每一件事都会得到更好的答案。喜欢

代码语言:javascript
复制
 public class MyActivity extends Activity{

            private TextView nameTextView ;
            private Subscription subs;
            @Override
            public void onCreate{
            //initialization of fields
            }

            @Override
            public void onResume(){
              super.onResume();
              subs = User.getInstance().stream.subscribe{user-> nameTextView.setText(user.username) }
          }

             @Override
             public void onPause(){
             super.onPause();
             subs.unsubscribe();
             }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34385025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档