Android 架构组件(一)——Lifecycle

本文介绍了Android架构组件中的Lifecycle组件,旨在解决MVP模式中Presenter感知Activity或Fragment生命周期的问题。Lifecycle组件包括LifecycleOwner和LifecycleObserver,通过实现LifecycleObserver接口可以简化代码。文章详细阐述了Lifecycle组件的原理,包括ObserverWithState类、生命周期方法的调用顺序,并给出了流程图,帮助读者理解其工作流程和观察者模式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 架构组件(一)——Lifecycle-Aware Components

有一天“谷歌开发者”官微推送了《正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频》,发现这种架构足够秒杀MVP、MVVM,虽然之前的Google I/O大会中也介绍过,但是这次推出是稳定版,而且是可以投入到生产中去。于是就顺着这篇去官网看了使用文档——《Guide to App Architecture》。为了能够更好的理解架构组件的原理,准备先从Lifecycle入手,一步步去理解。

为什么需要Lifecycle组件

 Lifecycle组件包括LifecycleOwner、LifecycleObserver。为什么需要Lifecycle组件?一项新的技术的提出肯定是为了解决痛点问题,如果使用过MVP模式的话,有个问题:Presenter感知Activity或者Fragment的生命周期?你可能会这样做,Presenter中定义多个和Activity或者Fragment相应的生命周期方法,然后在Activity或者Fragment中调用Presenter中定义的方法。比如下面的这个例子:

/**
 * Main Presenter
 */
public class MainPresenter implements IPresenter {
   

    public MainPresenter(Context context){
   

    }

    @Override
    public void onCreate() {
   

    }

    @Override
    public void onStart() {
   

    }

    @Override
    public void onResume() {
   

    }

    @Override
    public void onPause() {
   

    }

    @Override
    public void onStop() {
   

    }

    @Override
    public void onDestroy() {
   

    }
}
public interface IPresenter {
   
    void onCreate();

    void onStart();

    void onResume();

    void onPause();

    void onStop();

    void onDestroy();
}

public class MainActivity extends AppCompatActivity {
   
    private static final String TAG = "MainActivity";
    private IPresenter mPresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
        setContentView(R.layout.activity_main);
        mPresenter = new MainPresenter(this);
        mPresenter.onCreate();
    }

    @Override
    protected void onStart() {
   
        super.onStart();
        Log.d(TAG, "onStart: ");
        mPresenter.onStart();
    }

    @Override
    protected void onResume() {
   
        super.onResume();
        Log.d(TAG, "onResume: ");
        mPresenter.onResume();
    }

    @Override
    protected void onPause() {
   
        super.
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值