经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Jetpack架构组件(二)Lifecycle使用
来源:cnblogs  作者:安卓笔记侠  时间:2019/10/8 9:05:34  对本文有异议

1.直接添加如下依赖就可以满足日常的工作,如果缺少哪个库,再去单独添加就好了

  1. implementation "android.arch.lifecycle:extensions:1.1.1"

添加这一句代码就依赖了如下的库。
eXj6eJ.png

2.先不谈Activity和Fragment中如何使用,先举一个Lifecycle的简单例子。

  1. 1 ackage com.example.lifecycledemo1;
  2. 2
  3. 3 import android.arch.lifecycle.Lifecycle;
  4. 4 import android.arch.lifecycle.LifecycleObserver;
  5. 5 import android.arch.lifecycle.OnLifecycleEvent;
  6. 6 import android.support.v7.app.AppCompatActivity;
  7. 7 import android.os.Bundle;
  8. 8 import android.util.Log;
  9. 9
  10. 10 public class MainActivity extends AppCompatActivity {
  11. 11
  12. 12 private static final String TAG = "MainActivity";
  13. 13
  14. 14 @Override
  15. 15 protected void onCreate(Bundle savedInstanceState) {
  16. 16 super.onCreate(savedInstanceState);
  17. 17 setContentView(R.layout.activity_main);
  18. 18 getLifecycle().addObserver(new MyObserver());//1
  19. 19 }
  20. 20
  21. 21 public class MyObserver implements LifecycleObserver{
  22. 22
  23. 23 @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
  24. 24 void onResume(){
  25. 25 Log.d(TAG, "Lifecycle call onResume");
  26. 26 }
  27. 27 @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
  28. 28 void onPause(){
  29. 29 Log.d(TAG, "Lifecycle call onPause");
  30. 30 }
  31. 31 }
  32. 32
  33. 33 @Override
  34. 34 protected void onResume() {
  35. 35 super.onResume();
  36. 36 Log.d(TAG, "onResume");
  37. 37 }
  38. 38
  39. 39 @Override
  40. 40 protected void onPause() {
  41. 41 super.onPause();
  42. 42 Log.d(TAG, "onPause");
  43. 43
  44. 44 }
  45. 45 }

先实现MyObserver,对ON_CREATE和ON_RESUME事件进行监听。因为在Android Support Library 26.1.0 及其之后的版本,Activity和Fragment已经默认实现了LifecycleOwner接口,所以在注释1处可以直接使用getLifecycle方法获取Lifecycle对象,这样MyObserver就可以观察MainActivity的生命周期变化了,LifecycleOwner可以理解为被观察者,MainActivity默认实现了LifecycleOwner接口,也就是说MainActivity是被观察者。
运行程序,打印的log如下所示。

  1. D/MainActivity: onResume
  2. D/MainActivity: Lifecycle call onResume
  3. D/MainActivity: Lifecycle call onPause
  4. D/MainActivity: onPause

3.MVP的例子

  1. 1 public class MyPresenter implements IPresenter {
  2. 2 private static final String TAG = "test";
  3. 3
  4. 4 @Override
  5. 5 public void onResume() {
  6. 6 Log.d(TAG, "Lifecycle call onResume");
  7. 7 }
  8. 8
  9. 9 @Override
  10. 10 public void onPause() {
  11. 11 Log.d(TAG, "Lifecycle call onPause");
  12. 12 }
  13. 13 }
  14. 14
  15. 15 interface IPresenter extends LifecycleObserver {
  16. 16
  17. 17 @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
  18. 18 void onResume();
  19. 19
  20. 20 @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
  21. 21 void onPause();
  22. 22 }

IPresenter接口继承自LifecycleObserver接口,MyPresenter又实现了IPresenter接口,这样MyPresenter成为了一个观察者。
接在在MainActivity中加入MyPresenter:

  1. 1 public class MainActivity extends AppCompatActivity {
  2. 2
  3. 3 private static final String TAG = "test";
  4. 4 private IPresenter mPresenter;
  5. 5 @Override
  6. 6 protected void onCreate(Bundle savedInstanceState) {
  7. 7 super.onCreate(savedInstanceState);
  8. 8 setContentView(R.layout.activity_main);
  9. 9 mPresenter = new MyPresenter();
  10. 10 getLifecycle().addObserver(mPresenter);
  11. 11 }
  12. 12
  13. 13 @Override
  14. 14 protected void onResume() {
  15. 15 super.onResume();
  16. 16 Log.d(TAG, "onResume");
  17. 17 }
  18. 18
  19. 19 @Override
  20. 20 protected void onPause() {
  21. 21 super.onPause();
  22. 22 Log.d(TAG, "onPause");
  23. 23
  24. 24 }
  25. 25 }

MainActivity成为了被观察者,当它的生命周期发生变化时,MyPresenter就可以观察到,这样就不需要在MainActivity的多个生命周期方法中调用MyPresenter的方法了。
打印的日志如下:

  1. D/test: onResume
  2. D/test: Lifecycle call onResume
  3. D/test: Lifecycle call onPause
  4. D/test: onPause

  

 

  

原文链接:http://www.cnblogs.com/ganchuanpu/p/11617740.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号