mvp下rxjava+retrofit的登录网络请求demo
2016-11-02 16:38
489 查看
最近在练手一个app,功能模块的不断扩大后,发现代码可读性和维护性越来越差,故打算系统的学习mvp模式,正好结合目前流行的rxjava+retrofit网络请求方式,写了个demo
有啥建议或意见可发邮箱236490794@qq.com
废话不多 上代码
首先上项目结构图
data包:User简单的请求类封装,Result结果类的封装,不进行展示
http包:
HttpService.java
HttpMethods.java
比较基础的rxjava+retrofit的封装模式,采用的api是这几天搭建的一个服务器,可以根据自己的需求进行修改。
presenter包
LoginPresenter.java
view包:
ILoginActivity.java
提供参数设置方法,及回调接口
LoginActivity.java
module依赖:
记住加网络权限
最后上效果图
有啥建议或意见可发邮箱236490794@qq.com
废话不多 上代码
首先上项目结构图
data包:User简单的请求类封装,Result结果类的封装,不进行展示
http包:
HttpService.java
public interface HttpService { @GET("Login") Observable<Result> login(@Query("phone") String phone, @Query("password") String password); }
HttpMethods.java
public class HttpMethods { public static final String BASE_URL = "http://youbangserver.cn/YouBang/"; private static final int DEFAULT_TIMEOUT = 5; private Retrofit retrofit; private HttpService httpService; private HttpMethods() { OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS); retrofit = new Retrofit.Builder() .client(httpClientBuilder.build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .baseUrl(BASE_URL) .build(); httpService = retrofit.create(HttpService.class); } private static class SingletonHolder { private static final HttpMethods INSTANCE = new HttpMethods(); } //获取单例 public static HttpMethods getInstance() { return SingletonHolder.INSTANCE; } public void login(Subscriber<Result> subscriber, String phone, String password) { httpService.login(phone, password) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); } }
比较基础的rxjava+retrofit的封装模式,采用的api是这几天搭建的一个服务器,可以根据自己的需求进行修改。
presenter包
LoginPresenter.java
public class LoginPresenter { private ILoginActivity loginActivity; Subscriber<Result> subscriber; public LoginPresenter(ILoginActivity loginActivity) { this.loginActivity = loginActivity; } public void login() { subscriber = new Subscriber<Result>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { loginActivity.onFailure(e); } @Override public void onNext(Result result) { loginActivity.onSuccess(result); } }; HttpMethods.getInstance().login(subscriber, loginActivity.getUserPhone(), loginActivity.getUserPassword()); } }对view接口进行操作,在onNext\onError中通过接口传递回调
view包:
ILoginActivity.java
public interface ILoginActivity { String getUserPhone(); String getUserPassword(); void onSuccess(Result result); void onFailure(Throwable e); }
提供参数设置方法,及回调接口
LoginActivity.java
public class LoginActivity extends AppCompatActivity implements ILoginActivity { @Bind(R.id.etPhone) EditText etPhone; @Bind(R.id.etPassword) EditText etPassword; @Bind(R.id.btnLogin) Button btnLogin; @Bind(R.id.tvResult) TextView tvResult; private LoginPresenter loginPresenter = new LoginPresenter(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @Override public String getUserPhone() { return etPhone.getText().toString(); } @Override public String getUserPassword() { return etPassword.getText().toString(); } @Override public void onSuccess(Result result) { tvResult.setText(result.toString()); } @Override public void onFailure(Throwable e) { tvResult.setText(e.toString()); } @OnClick(R.id.btnLogin) public void onClick() { loginPresenter.login(); } }实现接口方法,持有presenter,对象,将事件传递给presenter类进行操作
module依赖:
记住加网络权限
最后上效果图
相关文章推荐
- 使用MVP+Retrofit+RxJava实现的的Android Demo (下)使用Retrofit+RxJava处理网络请求
- Android 框架设计Demo,一个简单的MVP示例搜索功能,网络请求用Retrofit+RxJava实现
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- [置顶] Android 一步步搭建MVP+Retrofit+RxJava网络请求框架
- Android使用RxJava+Retrofit请求网络的小Demo
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)
- MVP(Retrofit+RXJava)实现网络请求
- MVP+Retrofit+Rxjava网络请求购物车
- 使用Retrofit+RxJava搭建简单的MVP网络请求框架
- Retrofit+RxJava+MVP网络请求数据
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- android+MVP+Retrofit+RxJava做网络请求
- android MVP+Retrofit2.0与RxJava网络请求数据,listview展示
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式