package com.uiuios.aios.base; import android.app.Service; import android.content.Intent; import androidx.annotation.NonNull; 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 io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.subjects.BehaviorSubject; public abstract class BaseService extends Service implements LifecycleProvider { public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); public BaseService() { super(); } @Override public final Observable lifecycle() { return lifecycleSubject.hide(); } @Override public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { return RxLifecycle.bindUntilEvent(lifecycleSubject, event); } @Override public final LifecycleTransformer bindToLifecycle() { return RxLifecycleAndroid.bindActivity(lifecycleSubject); } @Override public void onCreate() { super.onCreate(); lifecycleSubject.onNext(ActivityEvent.CREATE); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); lifecycleSubject.onNext(ActivityEvent.STOP); } }