package com.atmob.rewardtask.utils; import android.util.Log; import com.atmob.rewardtask.bean.AppTaskControlResponse; import com.atmob.rewardtask.network.BaseHttpObserver; import com.atmob.rewardtask.network.NetworkClient; import atmob.io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import atmob.io.reactivex.rxjava3.disposables.CompositeDisposable; import atmob.io.reactivex.rxjava3.disposables.Disposable; import atmob.io.reactivex.rxjava3.schedulers.Schedulers; import atmob.request.CommonBaseRequest; /** * 提供一些关于积分墙的静态方法 */ public class AppTaskHandler { private static final String TAG = AppTaskHandler.class.getSimpleName(); /** * 异步查询是否有积分墙任务 * * @param onTaskResultListener 查询结果的回调 * @return 防止出现内存泄漏, 外部自行管理disposable, 这里偷懒了为了使用封装的 {@link BaseHttpObserver}, 应该返回Disposable最优 - - */ public static CompositeDisposable hasTask(OnTaskResultListener onTaskResultListener) { CompositeDisposable compositeDisposable = new CompositeDisposable(); if (onTaskResultListener == null) { return compositeDisposable; } NetworkClient.api().appTaskControlInfo(new CommonBaseRequest()) .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe(new BaseHttpObserver() { @Override public void onGotDisposable(Disposable disposable) { compositeDisposable.add(disposable); } @Override public void onSuccess(AppTaskControlResponse data) { if (data == null) { onTaskResultListener.onResult(false); return; } AppTaskControlResponse.Info pp = data.getPp(); onTaskResultListener.onResult(pp.isPop()); } @Override public void onFailed(int code, String msg) { Log.e(TAG, "onFailed: appTaskControlInfo api failed, code ==> " + code + ", msg ==> " + msg); } }); return compositeDisposable; } public interface OnTaskResultListener { void onResult(boolean hasTask); } }