首页 > 编程知识 正文

mvvm框架的优点,android studio导入别人的项目

时间:2023-05-04 17:53:43 阅读:116468 作者:761

实际接触和使用MVVM体系结构时,所有人都不好。 因为我个人认为,MVVM相对于MVC、MVP学习难度较大,设计知识点一点也不多。 所以我想慢慢记录自己的成长。 如果有错误的话希望你指出来。

还是那个图AAC (Androidarchitecturecomponents )。

本文介绍生命周期。 在了解和理解生命周期之后,最终将其运用到MVVM的项目中吧。 本文是自己的总结。 如果有错误的话,请指出来

一、生命周期介绍及简要认识

介绍:感知生命周期的组件

角色—监视生命周期组件(如Activity/Fragment )在生命周期发生变化时可以及时通知其他组件

其中包括生命周期所有者和生命周期观察器。 这样,实现生命周期所有者的是被观察者,可以看到源代码(returnsthelifecycleoftheprovider、生命周期的提供者,可以认为在很长时间内是被观察者)

请考虑,即使没有LiveData组件,只要活动的生命周期在onStart和onResume中,LiveData处于活动状态,更新的数据就会通知相应的活动

、生命周期为onStop或onPause时,不回调数据更新;生命周期为onResume时,立即回调数据。 如果没有LiveData,就必须在代码和活动中写很多判断来实现这个功能,而现在Lifecycles已经实现了这个功能。 我们只是在用。 看看我之前说的LiveData、LiveData监听更改的代码:

@Override

protectedvoidoncreate (@ nullablebundlesavedinstancestate )。

super.oncreate (savedinstancestate;

//this这里的类型是生命周期所有者,

livedata.observe(this,new Observer ) )。

//这里,当被观察者的生命周期所有者的生命周期发生变化时,通知观察者liveData调用onChanged。

@Override

公共语音更改(字符串) {

}

);

}

复制代码

为什么在这里可以直接使用this呢? 正如前面所述,从26个版本开始,Support库在AppCompatActivity和SupportActivity中都实现了生命周期所有者,并且在内部已经处理了UI接口的生命周期我们可以直接放入代码,如下所示

如果此处尚不清楚,请自行实现生命周期所有者和生命周期观察器。 (如果知道谷歌的组件,内部已经在处理了。 )

二、自己实现生命周期业主(被观察者生命周期)

我们创建Actvity并继承Activity类。 请注意,没有实现生命周期所有者。

自己实现生命周期所有者,提供被观察者的生命周期

新建LiveData,实现LiveData的数据变更监听。

onstop时,给livedata post个数据

活动包括:

publicclasslifecyclesactivityextendsactivityimplementslifecycleowner {

私密性mutablelivedatalivedata=newmutablelivedata (;

privatelifecycleregistrymlifecycleregistry=newlifecycleregistry (this;

@Override

protectedvoidoncreate (@ nullablebundlesavedinstancestate )。

super.oncreate (savedinstancestate;

setcontentview (r.layout.activity _ life cycles );

livedata.observe(this,new Observer ) )。

@Override

公共语音更改(字符串) {

观察logutils.I(livedata ),(=) s );

}

);

}

@Override

protectedvoidonsaveinstancestate (@ nonnullbundleoutstate )。

mlifecycleregistry.markstate (life cycle.state.created;

super.onsaveinstancestate;

}

@NonNull

@Override

公共生命周期获取生命周期(

返回生命周期注册表;

}

@Override

protected void onStop

super.onStop (;

liveData.postValue (“尝试运行”);

}

}

复制代码

运行后查看打印,按home键退出,点击返回。 我们以前的LiveData的效果也一样。 离开接口的时候不打印。 回到界面的时候马上打印。

三、自己实现生命周期观察器

我们自己创建新的MyObserver,并拦截所有生命周期

publicclassmyobserverimplementslifecycleobserver {

@ onlifecycleevent (life cycle.event.on _ create ) )。

公共语音开启

log utils.I (我的观察器)、) onCreate );

}

@ onlifecycleevent (life cycle.event.on _ start )。

公共语音启动

log utils.I (我的观察器)、) onStart );

}

@ onlifecycleevent (life cycle.event.on _ resume ) )。

公共语音oid on resume

logutils.I(myobserver ),) onResume );

}

@ onlifecycleevent (life cycle.event.on _ pause )。

public void onPause (

logutils.I(myobserver ),) onPause );

}

@ onlifecycleevent (life cycle.event.on _ stop )。

公共语音开启(

log utils.I (我的观察器),) onStop );

}

@ onlifecycleevent (life cycle.event.on _ destroy )。

public void onDestory

logutils.I(myobserver ),) onDestory );

}

//@ onlifecycleevent (life cycle.event.on _ any ) ) ) ) )。

//public void onAny ()

//log utils.I (我的观察器)、) onAny );

//}

}

复制代码

然后除了Activtiy

@Override

protectedvoidoncreate (@ nullablebundlesavedinstancestate )。

super.oncreate (savedinstancestate;

setcontentview (r.layout.activity _ life cycles );

获取生命周期().addobserver ) (newmyobserver ) );

}

复制代码

运行后,看打印,这里不贴效果。 当我们在项目中使用生命周期时,这些都不是我们需要考虑的。 这里简单地告诉大家生命周期是什么意思。 谷歌把我们要处理的东西封装在这些组件中。

到此为止,我大致了解了生命周期。 加油啊

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。