我有一个Android项目,目前还没有使用View Models或rxJava。它是一个相当简单的应用程序,它使用Parse sdk和一个解析服务器。它还处于项目的早期阶段,我决定开始使用VM和rxJava。
我的问题主要是关于结构,命名等。让我们使用Login作为例子:
我有一个名为AuthenticationService.java
的界面,其中包含login(Authorization auth, ServiceCallback<User> callback)
方法。
我的ParseAuthenticationService.java
实现了该界面,并完成了所有解析。
整个应用程序都是这样设置的,所以我的User.java
是MyParseUser.java
使用的界面,其中发生了所有解析的内容。
所以有一个登录按钮,LoginActivity
抓取用户名/密码,制作一个授权对象并调用登录功能。
对rxJava的更改是否就像将login
函数包装在observable中并在活动中订阅它一样简单?
看起来会是什么样?登录功能如下所示:
@Override
public void login(Authorization authorization, final ServiceCallback<User> callback)
{
cachedUser = null;
ParseUser.logInInBackground(authorization.getUsername(), authorization.getPassword(), new LogInCallback()
{
@Override
public void done(ParseUser user, ParseException e)
{
if (callback != null)
{
callback.onServiceRequestComplete(Response.<User>from((MyParseUser) user, e));
}
}
});
}
我可以保持相同的Parse-class-using-generic-interface结构吗?或者我应该重组/重命名我的文件?
感谢您的帮助。这有点压倒性的。
答案 0 :(得分:0)
使用接口单独的合同声明来实现。由于Observable模式是表示异步响应的好方法,因此在接口中用Observable替换回调似乎是合适的。
您可以开始将Observable版本的回调函数放在一起。例如,撰写Observable<User> loginObservable(Authorization auth)
(或更好Single<User> loginSingle(Authorization auth)
),其中login( ... )
或Observable.create()
基本上包裹Single.create()
。之后你可能需要重构,但是当你熟悉Rx时你会这样做。对我来说,切换到Rx是一个2步骤的过程;我进化了我的架构,但很久以后。
由于像这样创建Observable是一个有点高级的Rx主题,我建议你为Parse寻找已经存在的Rx包装器。