package bigfat.com.rxbusdemo; import android.os.Bundle; import android.support.annotation.CheckResult; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.view.View; import bigfat.com.rxbusdemo.rxbus.RxBus; import com.trello.rxlifecycle.FragmentEvent; import com.trello.rxlifecycle.FragmentLifecycleProvider; import com.trello.rxlifecycle.RxLifecycle; import rx.Observable; import rx.subjects.BehaviorSubject; /** * Created by yueban on 15:31 31/3/16. * Email: fbzhh007@gmail.com * QQ: 343278606 */ public class BaseFragment extends Fragment implements FragmentLifecycleProvider { private final BehaviorSubject<FragmentEvent> lifecycleSubject = BehaviorSubject.create(); protected final Observable<Object> mBus = RxBus .toObservable() .compose(bindToLifecycle()); protected final Observable<Object> mBusSticky = RxBus .toObservableSticky() .compose(bindToLifecycle()); @Override @NonNull @CheckResult public final Observable<FragmentEvent> lifecycle() { return lifecycleSubject.asObservable(); } @Override @NonNull @CheckResult public final <T> Observable.Transformer<T, T> bindUntilEvent(@NonNull FragmentEvent event) { return RxLifecycle.bindUntilEvent(lifecycleSubject, event); } @Override @NonNull @CheckResult public final <T> Observable.Transformer<T, T> bindToLifecycle() { return RxLifecycle.bindFragment(lifecycleSubject); } @Override public void onAttach(android.app.Activity activity) { super.onAttach(activity); lifecycleSubject.onNext(FragmentEvent.ATTACH); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); lifecycleSubject.onNext(FragmentEvent.CREATE); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); lifecycleSubject.onNext(FragmentEvent.CREATE_VIEW); } @Override public void onStart() { super.onStart(); lifecycleSubject.onNext(FragmentEvent.START); } @Override public void onResume() { super.onResume(); lifecycleSubject.onNext(FragmentEvent.RESUME); } @Override public void onPause() { lifecycleSubject.onNext(FragmentEvent.PAUSE); super.onPause(); } @Override public void onStop() { lifecycleSubject.onNext(FragmentEvent.STOP); super.onStop(); } @Override public void onDestroyView() { lifecycleSubject.onNext(FragmentEvent.DESTROY_VIEW); super.onDestroyView(); } @Override public void onDestroy() { lifecycleSubject.onNext(FragmentEvent.DESTROY); super.onDestroy(); } @Override public void onDetach() { lifecycleSubject.onNext(FragmentEvent.DETACH); super.onDetach(); } }