@Test public void testLeakFree() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); WeakReference<NaviEmitter> activityRef = new WeakReference<>(activity); WeakReference<LifecycleProvider<ActivityEvent>> providerRef = new WeakReference<>(provider); Observable<Object> observable = PublishSubject.create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(ActivityEvent.STOP)).test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); activity = null; provider = null; TestUtil.cleanGarbage(); assertNull(activityRef.get()); assertNull(providerRef.get()); } }
@Test public void testLeakFree() { NaviEmitter fragment = NaviEmitter.createFragmentEmitter(); LifecycleProvider<FragmentEvent> provider = NaviLifecycle.createFragmentLifecycleProvider(fragment); WeakReference<NaviEmitter> fragmentRef = new WeakReference<>(fragment); WeakReference<LifecycleProvider<FragmentEvent>> providerRef = new WeakReference<>(provider); Observable<Object> observable = PublishSubject.create().hide(); TestObserver<Object> testObserver = observable.compose(provider.bindUntilEvent(FragmentEvent.STOP)).test(); fragment.onAttach(null); fragment.onCreate(null); fragment.onCreateView(null); fragment.onStart(); fragment.onResume(); fragment.onPause(); fragment.onStop(); fragment.onDestroyView(); fragment.onDestroy(); fragment.onDetach(); fragment = null; provider = null; TestUtil.cleanGarbage(); assertNull(fragmentRef.get()); assertNull(providerRef.get()); } }
@Test public void testLifecycle() { NaviEmitter fragment = NaviEmitter.createFragmentEmitter(); LifecycleProvider<FragmentEvent> provider = NaviLifecycle.createFragmentLifecycleProvider(fragment); TestObserver<FragmentEvent> testObserver = provider.lifecycle().test(); fragment.onAttach(null); fragment.onCreate(null); fragment.onCreateView(null); fragment.onStart(); fragment.onResume(); fragment.onPause(); fragment.onStop(); fragment.onDestroyView(); fragment.onDestroy(); fragment.onDetach(); testObserver.assertValues( FragmentEvent.ATTACH, FragmentEvent.CREATE, FragmentEvent.CREATE_VIEW, FragmentEvent.START, FragmentEvent.RESUME, FragmentEvent.PAUSE, FragmentEvent.STOP, FragmentEvent.DESTROY_VIEW, FragmentEvent.DESTROY, FragmentEvent.DETACH ); }
@Test public void testLifecycle() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); TestObserver<ActivityEvent> testObserver = provider.lifecycle().test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); testObserver.assertValues( ActivityEvent.CREATE, ActivityEvent.START, ActivityEvent.RESUME, ActivityEvent.PAUSE, ActivityEvent.STOP, ActivityEvent.DESTROY ); }
fragment.onStop(); fragment.onDestroyView(); fragment.onDestroy(); fragment.onDetach();
@Test public void testPersistance() { NaviEmitter activity = NaviEmitter.createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = NaviLifecycle.createActivityLifecycleProvider(activity); TestObserver<ActivityEvent> testObserver = provider.lifecycle().test(); activity.onCreate(null); activity.onStart(); activity.onResume(); activity.onPause(); activity.onStop(); activity.onDestroy(); // Verify that you can remain subscribed until the Activity is completely gone activity.onCreate(null); testObserver.assertValues( ActivityEvent.CREATE, ActivityEvent.START, ActivityEvent.RESUME, ActivityEvent.PAUSE, ActivityEvent.STOP, ActivityEvent.DESTROY, ActivityEvent.CREATE ); }
TestObserver<Object> destroyViewObserver = observable.compose(provider.bindToLifecycle()).test(); fragment.onDestroy(); attachObserver.assertNotComplete(); createObserver.assertComplete();
@Test public void testBindToLifecycle() { NaviEmitter activity = createActivityEmitter(); LifecycleProvider<ActivityEvent> provider = createActivityLifecycleProvider(activity); Observable<Object> observable = create().hide(); activity.onCreate(null); TestObserver<Object> createObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onStart(); createObserver.assertNotComplete(); TestObserver<Object> startObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onResume(); createObserver.assertNotComplete(); startObserver.assertNotComplete(); TestObserver<Object> resumeTestSub = observable.compose(provider.bindToLifecycle()).test(); activity.onPause(); createObserver.assertNotComplete(); startObserver.assertNotComplete(); resumeTestSub.assertComplete(); TestObserver<Object> pauseObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onStop(); createObserver.assertNotComplete(); startObserver.assertComplete(); pauseObserver.assertComplete(); TestObserver<Object> stopObserver = observable.compose(provider.bindToLifecycle()).test(); activity.onDestroy(); createObserver.assertComplete(); stopObserver.assertComplete(); }
@Override @CallSuper protected void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper public void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper public void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper public void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper public void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper protected void onDestroy() { base.onDestroy(); super.onDestroy(); }
@Override @CallSuper public void onDestroy() { base.onDestroy(); super.onDestroy(); }