AlarmManager 笔记

绑定

1
2
3
4
5
6
7
8
9
10
11
12
private fun useAlarmManager(context: Context) {
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(context, AppWidgetService::class.java)
val pendIntent =
PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT)
alarmManager.setRepeating(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime(),
backgroundCheckTime.toLong() * 60000,
pendIntent
)
}

取消

1
2
3
4
5
6
7
8
private fun cancelAlarmManager(context: Context) {
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(context, AppWidgetService::class.java)
val pendIntent =
PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT)
pendIntent.cancel()
alarmManager.cancel(pendIntent)
}

AS无鼠标常用快捷键-Ubuntu

  • 代码快移动
    Ctrl+Shift+上下键

  • 单行代码移动
    Alt+Shift+上下键

  • 上下快速跳转
    Alt+上下键

  • 左右快速跳转
    Ctrl+左右键

  • 演示模式开关等选项
    Ctrl+` //1号键左边

  • VCS等选项
    Alt+` //1号键左边

  • 项目文件定位切换
    Ctrl+E
    Ctrl+Tab //不松开 Ctrl, 然后利用方向键定位,松开 Ctrl 即可打开某个文件

  • 显示隐藏项目目录模块
    Alt+1

  • New 文件
    Ctrl+Alt+Insert

  • New 临时文件(不常用)
    或 Ctrl+Shift+Alt+Insert

  • 从代码中将焦点(光标)定位到目录
    Alt+Home

  • 将焦点从目录移动到代码中
    方向键 + Enter //先利用方向键定位到具体的文件

组合

  • New 一个文件
    利用 Ctrl+E 定位到 Project View 中,然后定位到要新文件存放的目录,在该目录上按 ‘文档键’(一般在空格键的右边第二或这第三个)

ViewModel LiveData 笔记

ViewModel 不要持有 View Activity Fragment 等这些生命周期短的实例,以免造成内存泄漏。

看官方的 ViewModel 生命周期图,我们都知道 ViewModel 的生命周期和 Activity 或者 Fragment 差不多,这种理解不够严谨,因为有一个例外: 屏幕旋转的时候, Activity 会结束生命然后再重建生命,而此时 ViewModel 的生命依然存活;ViewModel 的生命存活时间大于了 Activity 的生命,该情况下,如果 ViewModel 持有了 Activity 的实例,就很容易造成内存泄漏。