不继承RxAppCompatActivity的情况下使用RxLifeCycle
2018-01-05 12:57
1001 查看
在Android中使用
其实作者已经为我们提供了解决方案,只是没有在sample中讲解罢了,下面,我通过两个小例子讲一下在不继承
1. 添加依赖:
2. 在
3. 在
主要原理用到的是Android的
Rxjava时可能会在页面退出时出现内存泄漏的情况,RxLifeCycle就是为此而生,但是作者在sample中写得很简单,只用了继承
RxAppCompatActivity的案例讲解它的用法。但是用户在使用过程中,可能会因为继承了别的
Activity,不好再继承
RxAppCompatActivity,这种情况怎么办呢?
其实作者已经为我们提供了解决方案,只是没有在sample中讲解罢了,下面,我通过两个小例子讲一下在不继承
RxAppCompatActivity或
RxFragment时如何使用RxLifeCycle:
1. 添加依赖:
compile 'com.trello.rxlifecycle2:rxlifecycle-android-lifecycle:2.2.1'
2. 在
AppCompatActivity中使用:
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LifecycleProvider<Lifecycle.Event> lifecycleProvider = AndroidLifecycle.createLifecycleProvider(this); Observable.interval(1, TimeUnit.SECONDS) .doOnDispose(new Action() { @Override public void run() throws Exception { Log.e(TAG, "unSubscribe subscription"); } }) .compose(lifecycleProvider.<Long>bindUntilEvent(Lifecycle.Event.ON_DESTROY)) .subscribe(new Consumer<Long>() { @Override public void accept(Long num) throws Exception { Log.e(TAG, "running until onDestroy(): " + num); } }); } }
3. 在
Fragment中使用:
public class TestFragment extends Fragment { private static final String TAG = "TestFragment"; public TestFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_test, container, false); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); LifecycleProvider<Lifecycle.Event> lifecycleProvider = AndroidLifecycle.createLifecycleProvider(this); Observable.interval(1, TimeUnit.SECONDS) .doOnDispose(new Action() { @Override public void run() throws Exception { Log.e(TAG, "UnSubscribing subscription"); } }) .compose(lifecycleProvider.<Long>bindUntilEvent(Lifecycle.Event.ON_PAUSE)) .subscribe(new Consumer<Long>() { @Override public void accept(Long num) throws Exception { Log.e(TAG, "Running until onPause(): " + num); } }); } }
主要原理用到的是Android的
LifeCycle,这里就不具体展开了。
相关文章推荐
- Rxlifecycle 中提供了 RxAppCompatActivity
- 使用registerActivityLifecycleCallbacks实现整个app所有activity生命周期的监听和处理
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- ActivityLifecycleCallbacks使用示例
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- 使用ActivityLifecycleCallbacks管理Activity和区分App前后台
- Rxlifecycle使用详解,解决RxJava内存泄露问题
- Rxlifecycle使用详解,解决RxJava内存泄露问题
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- RxLifecycle使用浅解
- ActivityLifecycleCallbacks使用方法初探
- Activitylifecyclecallbacks使用
- 当Activity在不继承FragmengActivity的情况下,Fragment中集成ViewpagerIndicator使用详解
- Android开发——使用ActivityLifecycleCallbacks监控App是否处于后台
- Rxlifecycle使用详解,解决RxJava内存泄露问题
- ActivityLifecycleCallbacks 的简单使用
- Android开发 - ActivityLifecycleCallbacks使用方法初探
- Android 使用ActivityLifecycleCallbacks监听自己应用Activity的生命周期
- Rxlifecycle(一):使用
- 安卓Activitylifecyclecallbacks使用