ARTS-3

172 阅读2分钟

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》