A
102. Binary Tree Level Order Traversal
二叉树的层次遍历,基本功的题目。
只是在层次遍历的基础上,进行每一层是否结束的判断,方法是:先通过当前队列内容,遍历当前层结点,将结点 val 加入到 list 中,然后将每个结点的左右子结点也加入到队列中。
二叉树的遍历,绝对是基本功,二叉树绝大多数算法都与遍历有关。各种遍历操作、递归与非递归实现,都要烂熟于心。从这个角度讲,该题不应该是中等难度,应该是 easy。
R
Dive deep into Android’s ViewModel — Android Architecture Components
相关组件:
- ViewModel:存储 UI 相关数据,即使布局旋转,数据也会保留;
- Lifecycle-Aware Components:可感知生命周期的组件,例如 Activity、Fragment;
- LiveData:可观察对象,当自身数据发生变化时通知观察者,它也是 Lifecycle-Aware 的;
传统的屏幕旋转保存数据的方法
- onSaveInstanceState
- 通过配置,禁止页面重建
- 固定横竖屏
ViewModel 是如何做到保存数据的
文中介绍了ViewModelProvider、ViewModelFactory、ViewModelStore 等相关概念,感觉这样泛泛的读收获不大,于是乎自己又通过阅读源码整理成了 Share 的内容。
T
1、前台 Service 必须为状态栏提供通知(Notification)。除非将服务停止或从前台移除,否则不能清除该通知。如要请求让服务在前台运行,请调用 startForeground()。此方法采用两个参数:唯一标识通知的整型数和用于状态栏的 Notification。如要从前台移除服务,请调用 stopForeground()。此方法采用布尔值,指示是否需同时移除状态栏通知。此方法不会停止服务。但是,如果您在服务仍运行于前台时将其停止,则通知也会随之移除。
2、CardView 中重写 setPadding 方法,方法体为空实现,所以对 CardView 使用 padding 属性是无效的,取而代之的是 app:contentPadding 属性。类似的还有背景色,设置时要使用 app: cardBackgroundColor,而使用 android:background 也是无效的。
S
正如 Review 中提到的,详细看了下 ViewModel 的创建过程,了解了 ViewModel 如何做到由于系统配置导致 Activity 重建时数据不丢失的:《ViewModel》