大象笔记
withContext(Dispatchers.IO) 与 viewModelScope.launch(Dispatchers.IO) 的区别
## CoroutineScope withContext lifecycleScope viewModelScope 该如何选择
`CoroutineScope`, `withContext`, `lifecycleScope`, 和
Android Kotlin 协程 Dispatchers 有哪些值
根据具体的场景和需求选择合适的调度器非常重要,这样可以更好地平衡应用的性能和用户体验。
## Dispatchers 有哪些值
- Dispatchers.Main:Android 主线程。用于调用 suspend 函数,UI 框架
Android Kotlin Room: AppDatabase_Impl does not exist
Android 4.1.2 测试 Android Room 的使用,在 coroutine 中调用 Room.databaseBuilder 时,报错
> AppDatabase_Impl does not exist
Goo
Android ViewModel 与 LiveData 的使用场景
## 概述
- 在 activity 中监听 ViewModel 中数据的变化,当有变化时,将对应的数据显示在界面组件上
- LiveData 在 ViewModel 中使用,上面监听的数据类型就是 LiveData 类型。
- 同时
kotlin 的 suspend fun 函数
在看 Android Room 的示例代码时,看到一些 DAO 中的操作函数前有 suspend 关键字。例如:
```
@Query("DELETE FROM word_table")
suspend fun deleteAll
使用视图绑定 View Binding 替代 findViewById
使用场景,例如,点击按钮获取输入框的内容。就需要写一堆 findViewById 的代码。
Android Studio 3.6 之后,可以使用 View Binding 来简化这个操作。
而且在绝大部分场景下,view bin
tampermonkey onclick 无效,显示 xxx is not defined
使用 tampermonkey 在当前网页中添加了一个按钮,用于手动触发自动化逻辑。
```
开始抢购
```
do_something 函数,是我在 tampermonkey 脚本中定义的函数。
但是,点击按钮之后,
Android 点击 FAB 按钮打开另一个 fragment
使用 Android Studio 的 Basic Activity 模板创建了新项目。
Basic Activity 内置了:
- 一个底部 FAB 按钮
- 两个 fragment 可以相互切换
但是,我想实现的交互
tampermonkey 上传 Blob 文件到其他服务器,multipart/form-data 版
application/octet-stream 版本的缺陷:
- 无法增加多余参数。例如,我想顺便传递用户名,就没法增加字段了
- 搜了半天没找到 Spring Boot 读取 application/octet-stream 的
tampermonkey 上传 Blob 文件到其他服务器,application/octet-stream 版
例如,我想将 https://www.sunzhongwei.com 网页中下载到的 Excel 文件,上传到其他服务器。这里以 http://localhost:5000 为本地测试环境。
## tampermonkey 中是否