BaseRxActivity.java 2.13 KB
package com.hjx.parent.rx;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;

import com.hjx.parent.BaseActivity;
import com.prws.common.bean.ResponseResult;
import com.trello.rxlifecycle2.android.ActivityEvent;

import io.reactivex.subjects.BehaviorSubject;

public abstract class BaseRxActivity<VB extends ViewBinding> extends BaseActivity<VB> implements ILifecycleActivity {
    private BehaviorSubject<ActivityEvent> rxLifecycle = BehaviorSubject.create();

    @Override
    public BehaviorSubject<ActivityEvent> getRxLifecycle() {
        return rxLifecycle;
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rxLifecycle.onNext(ActivityEvent.CREATE);
    }

    @Override
    protected void onStart() {
        super.onStart();
        rxLifecycle.onNext(ActivityEvent.START);
    }

    @Override
    protected void onResume() {
        super.onResume();
        rxLifecycle.onNext(ActivityEvent.RESUME);
    }

    @Override
    protected void onPause() {
        super.onPause();
        rxLifecycle.onNext(ActivityEvent.PAUSE);
    }

    @Override
    protected void onStop() {
        super.onStop();
        rxLifecycle.onNext(ActivityEvent.STOP);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        rxLifecycle.onNext(ActivityEvent.DESTROY);
    }

    public <T> boolean handleResponse(ResponseResult<T> response, Throwable t) {
        if (t != null) {
            t.printStackTrace();
            showToast(t.getMessage());
        }
        if (response == null) return false;
        if (response.getSuccess() != null && response.getSuccess()) {
            return true;
        } else {
            if (response.getMsg() != null && !response.getMsg().isEmpty()) {
                showToast(response.getMsg());
            }
            return false;
        }
    }

    public <T> boolean handleResponseData(ResponseResult<T> response, Throwable t) {
        if (handleResponse(response, t)) {
            return response.getData() != null;
        }
        return false;
    }
}