package com.uiuios.aios.base; import android.os.Bundle; import androidx.annotation.CallSuper; import androidx.annotation.CheckResult; import androidx.annotation.ContentView; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.trello.rxlifecycle4.LifecycleProvider; import com.trello.rxlifecycle4.LifecycleTransformer; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.trello.rxlifecycle4.android.RxLifecycleAndroid; import com.uiuios.aios.R; import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.subjects.BehaviorSubject; public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider { public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); public BaseActivity() { super(); } @ContentView public BaseActivity(@LayoutRes int contentLayoutId) { super(contentLayoutId); } @Override @NonNull @CheckResult public final Observable lifecycle() { return lifecycleSubject.hide(); } @Override @NonNull @CheckResult public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { return RxLifecycle.bindUntilEvent(lifecycleSubject, event); } @Override @NonNull @CheckResult public final LifecycleTransformer bindToLifecycle() { return RxLifecycleAndroid.bindActivity(lifecycleSubject); } @Override @CallSuper protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); lifecycleSubject.onNext(ActivityEvent.CREATE); // StatusBarUtil.init(this); UltimateBarX.statusBar(this) .transparent() .colorRes(R.color.colorPrimaryDark) // .light(true) .apply(); UltimateBarX.navigationBar(this) .transparent() .colorRes(R.color.colorPrimaryDark) // .light(true) .apply(); setContentView(this.getLayoutId()); initView(); initData(); } /** * 设置布局 */ public abstract int getLayoutId(); /** * 初始化视图 */ public abstract void initView(); /** * 初始化数据 */ public abstract void initData(); @Override @CallSuper protected void onStart() { super.onStart(); lifecycleSubject.onNext(ActivityEvent.START); } @Override @CallSuper protected void onResume() { super.onResume(); lifecycleSubject.onNext(ActivityEvent.RESUME); } @Override @CallSuper protected void onPause() { lifecycleSubject.onNext(ActivityEvent.PAUSE); super.onPause(); } @Override @CallSuper protected void onStop() { lifecycleSubject.onNext(ActivityEvent.STOP); super.onStop(); } @Override @CallSuper protected void onDestroy() { lifecycleSubject.onNext(ActivityEvent.DESTROY); super.onDestroy(); } }