仓库提供请求服务
之前每次请求都要创建服务,可以封装在一个类提供单例对象;
OkHttpClient okHttpClient = NetworkModule.provideOkHttpClient();
Retrofit retrofit = NetworkModule.provideRetrofit(okHttpClient);
DefaultService service = retrofit.create(DefaultService.class)
service.sheets(null, 10)
// 网络执行在子线程
.subscribeOn(Schedulers.io())
// 请求完成,观察者在主线程执行(onSubscribe,onNext,onError,onComplete)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new HttpObserver<SheetWrapper<Sheet>>(getHostActivity(),true) {
@Override
public void onSucceeded(SheetWrapper<Sheet> data) {
Log.d(TAG, "onSucceeded: "+data.getData().getData().get(1));
//hideLoading();
}
});DefaultRepository仓库
public class DefaultRepository {
private static DefaultRepository instance;
private final DefaultService service;
public DefaultRepository() {
// 虽然当前类是单例设计模式,但因为直接调用provideRetrofit这样的方法
service = NetworkModule.provideRetrofit(NetworkModule.provideOkHttpClient()).create(DefaultService.class);
}
/**
* 返回当前对象的唯一实例
* <p>
* 单例设计模式
* 由于移动端很少有高并发
* 所以这个就是简单判断
*
* @return
*/
public synchronized static DefaultRepository getInstance() {
if (instance == null) {
instance = new DefaultRepository();
}
return instance;
}
/**
* 广告列表
*
* @return
*/
public Observable<ListResponse<Ad>> ads(int position) {
return service.ads(position)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 首页banner界面广告
*
* @return
*/
public Observable<ListResponse<Ad>> bannerAd() {
return ads(Constant.VALUE0);
}
}自动释放rxjava
由于系统资源分配问题,页面在后台被强制销毁,如果不释放在页面请求相关的资源,就容易造成内存泄漏
添加依赖
//自动释放RxJava相关资源
//https://github.com/uber/AutoDispose
implementation "com.uber.autodispose2:autodispose-androidx-lifecycle:2.1.1"使用
activity:
Observable<ListResponse<Ad>> ads = DefaultRepository.getInstance().bannerAd();
ads.
// 自动释放RxJava相关资源
to(autoDisposable(AndroidLifecycleScopeProvider.from(this)))
.subscribe(new HttpObserver<ListResponse<Ad>>() {
@Override
public void onSucceeded(ListResponse<Ad> data) {
}
});
Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.
1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino
我一直梦想, 看到你们相册那样的地方。真棒。
我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。
我热爱这样的想法, 去那么多国家。真的很鼓舞。
能感受到热爱。继续保持 感受。
我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。
1
1
1