实习笔记-22

LiveData, MutableLiveData

防止暴露子类某些方法

1
2
val name: LiveData<NameBean> get() = _name
private val _name = MutableLiveData<NameBean>()

界面性能优化ViewStub

根据条件判断某些控件显示,某些不显示时,可以使用ViewStub来减少不必要的实例化开销。

android.view.ViewStub,ViewStub 是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有 ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候。

ViewStub的局限性

  1. ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。

  2. ViewStub只能用来Inflate一个布局文件,而不是某个具体的View,当然也可以把View写在某个布局文件中。

基于以上的特点,那么可以考虑使用ViewStub的情况有:

  1. 在程序的运行期间,某个布局在Inflate后,就不会有变化,除非重新启动。

    因为ViewStub只能Inflate一次,之后会被置空,所以无法指望后面接着使用ViewStub来控制布局。所以当需要在运行时不止一次的显示和隐藏某个布局,那么ViewStub是做不到的。这时就只能使用View的可见性来控制了。

  2. 想要控制显示与隐藏的是一个布局文件,而非某个View。

    因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。

    所以,如果想要控制某个View(如Button或TextView)的显示与隐藏,或者想要在运行时不断的显示与隐藏某个布局或View,只能使用View的可见性来控制。

startService

作者

Meow Meow Liu

发布于

2022-03-22

更新于

2024-04-23

许可协议

评论