实习笔记-3
在安卓中显示gif图片
使用WebView
1 | <WebView |
1 | runWebView.loadDataWithBaseURL(null, |
使用WebView
1 | <WebView |
1 | runWebView.loadDataWithBaseURL(null, |
1 | val name: LiveData<NameBean> get() = _name |
根据条件判断某些控件显示,某些不显示时,可以使用ViewStub来减少不必要的实例化开销。
android.view.ViewStub,ViewStub 是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有 ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候。
1 | FrameLayout |
使用MutableLiveData的observer对数据进行观察,跳转界面返回后删除list中的元素,出现CurrentModificationException
改用Vector等线程安全的集合
Binder 与其他IPC的比较
binder | 共享内存 | Socket |
---|---|---|
拷贝一次 | 0 | 1 |
C/S模式,易用性高 | 控制负载,易用性差 | C/S开销大 |
为每个App分配UID | 访问接入点是开放的,不安全 | 访问接入点是开放的,不安全 |
共享内存 两个mmap,Binder一个mmap
获取Surface对象,performMeasure-丈量View树的各个view的大小,performLayout-对整个视图树进行布局,performDraw,对视图树进行绘制
源码解析
1 | if(Activity窗口是第一次被请求执行测量、布局和绘制操作){ |