1
0
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:
pdog
2018-03-23 11:17:15 +08:00
parent 6d23bebca7
commit 4aa23833a6
23 changed files with 108 additions and 321 deletions

View File

@@ -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);
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}

View File

@@ -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.

View File

@@ -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();

View File

@@ -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);
}
}

View File

@@ -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