mirror of
https://github.com/WuXiaolong/AndroidMVPSample.git
synced 2025-12-21 02:55:41 +08:00
1. rxjava1.0 -> rxjava2.0
2. png -> webp
This commit is contained in:
@@ -3,11 +3,11 @@ package com.wuxiaolong.androidmvpsample.mvp.other;
|
||||
import com.wuxiaolong.androidmvpsample.retrofit.ApiStores;
|
||||
import com.wuxiaolong.androidmvpsample.retrofit.ApiClient;
|
||||
|
||||
import rx.Observable;
|
||||
import rx.Subscriber;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.observers.DisposableObserver;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
|
||||
/**
|
||||
@@ -19,7 +19,7 @@ import rx.subscriptions.CompositeSubscription;
|
||||
public class BasePresenter<V> {
|
||||
public V mvpView;
|
||||
protected ApiStores apiStores;
|
||||
private CompositeSubscription mCompositeSubscription;
|
||||
private CompositeDisposable mCompositeDisposable;
|
||||
|
||||
public void attachView(V mvpView) {
|
||||
this.mvpView = mvpView;
|
||||
@@ -29,25 +29,27 @@ public class BasePresenter<V> {
|
||||
|
||||
public void detachView() {
|
||||
this.mvpView = null;
|
||||
onUnsubscribe();
|
||||
onUnSubscribe();
|
||||
}
|
||||
|
||||
|
||||
//RXjava取消注册,以避免内存泄露
|
||||
public void onUnsubscribe() {
|
||||
if (mCompositeSubscription != null && mCompositeSubscription.hasSubscriptions()) {
|
||||
mCompositeSubscription.unsubscribe();
|
||||
//RxJava取消注册,以避免内存泄露
|
||||
public void onUnSubscribe() {
|
||||
if (mCompositeDisposable != null) {
|
||||
mCompositeDisposable.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void addSubscription(Observable observable, Subscriber subscriber) {
|
||||
if (mCompositeSubscription == null) {
|
||||
mCompositeSubscription = new CompositeSubscription();
|
||||
public void addSubscription(Observable observable, DisposableObserver observer) {
|
||||
if (mCompositeDisposable == null) {
|
||||
mCompositeDisposable = new CompositeDisposable();
|
||||
}
|
||||
mCompositeSubscription.add(observable
|
||||
.subscribeOn(Schedulers.io())
|
||||
|
||||
mCompositeDisposable.add(observer);
|
||||
|
||||
observable.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(subscriber));
|
||||
.subscribeWith(observer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@ package com.wuxiaolong.androidmvpsample.retrofit;
|
||||
|
||||
import com.wuxiaolong.androidutils.library.LogUtil;
|
||||
|
||||
import retrofit2.adapter.rxjava.HttpException;
|
||||
import rx.Subscriber;
|
||||
|
||||
import io.reactivex.observers.DisposableObserver;
|
||||
import retrofit2.HttpException;
|
||||
|
||||
|
||||
/**
|
||||
* Created by WuXiaolong on 2016/9/22.
|
||||
@@ -12,7 +14,7 @@ import rx.Subscriber;
|
||||
* 微信公众号:吴小龙同学
|
||||
* 个人博客:http://wuxiaolong.me/
|
||||
*/
|
||||
public abstract class ApiCallback<M> extends Subscriber<M> {
|
||||
public abstract class ApiCallback<M> extends DisposableObserver<M> {
|
||||
|
||||
public abstract void onSuccess(M model);
|
||||
|
||||
@@ -50,7 +52,7 @@ public abstract class ApiCallback<M> extends Subscriber<M> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompleted() {
|
||||
public void onComplete() {
|
||||
onFinish();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.wuxiaolong.androidmvpsample.BuildConfig;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
/**
|
||||
@@ -32,7 +32,7 @@ public class ApiClient {
|
||||
mRetrofit = new Retrofit.Builder()
|
||||
.baseUrl(ApiStores.API_SERVER_URL)
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
|
||||
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
||||
.client(okHttpClient)
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@ package com.wuxiaolong.androidmvpsample.retrofit;
|
||||
|
||||
import com.wuxiaolong.androidmvpsample.mvp.main.MainModel;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Path;
|
||||
import rx.Observable;
|
||||
|
||||
/**
|
||||
* Created by WuXiaolong on 2016/3/24.
|
||||
|
||||
@@ -21,13 +21,13 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.observers.DisposableObserver;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import retrofit2.Call;
|
||||
import rx.Observable;
|
||||
import rx.Subscriber;
|
||||
import rx.Subscription;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
|
||||
/**
|
||||
* Created by WuXiaolong on 2015/9/23.
|
||||
@@ -35,9 +35,9 @@ import rx.subscriptions.CompositeSubscription;
|
||||
* 微信公众号:吴小龙同学
|
||||
* 个人博客:http://wuxiaolong.me/
|
||||
*/
|
||||
public class BaseActivity extends AppCompatActivity {
|
||||
public abstract class BaseActivity extends AppCompatActivity {
|
||||
public Activity mActivity;
|
||||
private CompositeSubscription mCompositeSubscription;
|
||||
private CompositeDisposable mCompositeDisposable;
|
||||
private List<Call> calls;
|
||||
|
||||
@Override
|
||||
@@ -60,7 +60,6 @@ public class BaseActivity extends AppCompatActivity {
|
||||
super.setContentView(view, params);
|
||||
ButterKnife.bind(this);
|
||||
mActivity = this;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -93,36 +92,37 @@ public class BaseActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
|
||||
public void addSubscription(Observable observable, Subscriber subscriber) {
|
||||
if (mCompositeSubscription == null) {
|
||||
mCompositeSubscription = new CompositeSubscription();
|
||||
public <T> void addSubscription(Observable<T> observable, DisposableObserver<T> observer) {
|
||||
if (mCompositeDisposable == null) {
|
||||
mCompositeDisposable = new CompositeDisposable();
|
||||
}
|
||||
mCompositeSubscription.add(observable
|
||||
.subscribeOn(Schedulers.io())
|
||||
mCompositeDisposable.add(observer);
|
||||
|
||||
observable.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(subscriber));
|
||||
.subscribe(observer);
|
||||
}
|
||||
|
||||
public void addSubscription(Subscription subscription) {
|
||||
if (mCompositeSubscription == null) {
|
||||
mCompositeSubscription = new CompositeSubscription();
|
||||
public void addSubscription(Disposable disposable) {
|
||||
if (mCompositeDisposable == null) {
|
||||
mCompositeDisposable = new CompositeDisposable();
|
||||
}
|
||||
mCompositeSubscription.add(subscription);
|
||||
mCompositeDisposable.add(disposable);
|
||||
}
|
||||
|
||||
public void onUnsubscribe() {
|
||||
LogUtil.d("onUnsubscribe");
|
||||
LogUtil.d("onUnSubscribe");
|
||||
//取消注册,以避免内存泄露
|
||||
if (mCompositeSubscription != null && mCompositeSubscription.hasSubscriptions())
|
||||
mCompositeSubscription.unsubscribe();
|
||||
if (mCompositeDisposable != null)
|
||||
mCompositeDisposable.dispose();
|
||||
}
|
||||
|
||||
public Toolbar initToolBar(String title) {
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
if (toolbar != null) {
|
||||
setSupportActionBar(toolbar);
|
||||
TextView toolbaTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
|
||||
TextView toolbaTitle = toolbar.findViewById(R.id.toolbar_title);
|
||||
toolbaTitle.setText(title);
|
||||
}
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
|
||||
@@ -11,9 +11,11 @@ import android.widget.Toast;
|
||||
|
||||
import com.wuxiaolong.androidmvpsample.R;
|
||||
|
||||
import org.reactivestreams.Subscription;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import rx.Subscription;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.observers.DisposableObserver;
|
||||
|
||||
/**
|
||||
* Created by WuXiaolong on 2015/9/23.
|
||||
@@ -55,19 +57,19 @@ public class BaseFragment extends Fragment {
|
||||
onUnsubscribe();
|
||||
}
|
||||
|
||||
private CompositeSubscription mCompositeSubscription;
|
||||
private CompositeDisposable mCompositeDisposable;
|
||||
|
||||
public void onUnsubscribe() {
|
||||
//取消注册,以避免内存泄露
|
||||
if (mCompositeSubscription != null) {
|
||||
mCompositeSubscription.unsubscribe();
|
||||
if (mCompositeDisposable != null) {
|
||||
mCompositeDisposable.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public void addSubscription(Subscription subscription) {
|
||||
// if (mCompositeSubscription == null) {
|
||||
mCompositeSubscription = new CompositeSubscription();
|
||||
public void addSubscription(DisposableObserver observer) {
|
||||
// if (mCompositeDisposable == null) {
|
||||
mCompositeDisposable = new CompositeDisposable();
|
||||
// }
|
||||
mCompositeSubscription.add(subscription);
|
||||
mCompositeDisposable.add(observer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.wuxiaolong.androidmvpsample.mvp.other.MvpActivity;
|
||||
import com.wuxiaolong.androidmvpsample.retrofit.ApiCallback;
|
||||
import com.wuxiaolong.androidmvpsample.retrofit.RetrofitCallback;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import retrofit2.Call;
|
||||
@@ -26,16 +26,14 @@ import retrofit2.Call;
|
||||
*/
|
||||
public class MainActivity extends MvpActivity<MainPresenter> implements MainView {
|
||||
|
||||
@Bind(R.id.text)
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
ButterKnife.bind(this);
|
||||
initToolBarAsHome("MVP+Retrofit+Rxjava");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,7 +62,7 @@ public class MainActivity extends MvpActivity<MainPresenter> implements MainView
|
||||
loadDataByRetrofit();
|
||||
break;
|
||||
case R.id.button1:
|
||||
loadDataByRetrofitRxjava();
|
||||
loadDataByRetrofitRxJava();
|
||||
break;
|
||||
case R.id.button2:
|
||||
//请求接口
|
||||
@@ -101,10 +99,12 @@ public class MainActivity extends MvpActivity<MainPresenter> implements MainView
|
||||
}
|
||||
|
||||
//全国+国外主要城市代码http://mobile.weather.com.cn/js/citylist.xml
|
||||
private void loadDataByRetrofitRxjava() {
|
||||
private void loadDataByRetrofitRxJava() {
|
||||
showProgressDialog();
|
||||
addSubscription(apiStores().loadDataByRetrofitRxjava("101220602"),
|
||||
addSubscription(
|
||||
apiStores().loadDataByRetrofitRxjava("101220602"),
|
||||
new ApiCallback<MainModel>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(MainModel model) {
|
||||
dataSuccess(model);
|
||||
@@ -113,7 +113,6 @@ public class MainActivity extends MvpActivity<MainPresenter> implements MainView
|
||||
@Override
|
||||
public void onFailure(String msg) {
|
||||
toastShow(msg);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user