分类下相关文章
2023-05-19 · 阅读 6859 · 字数 285
根据具体的场景和需求选择合适的调度器非常重要,这样可以更好地平衡应用的性能和用户体验。 Dispatchers 有哪些值 Dispatchers.Main:Android 主线程。用于调用 suspend 函数,UI 框架操作,及更新 LiveData 对象。 Dispatchers.IO:非主线程。用于磁盘操作(例如,Room 操作),及网络 I/O 请求(例如,调用服务器 API)。 Dispatchers.Default:非主线程,用于 CPU 密集型操作。例如,list 排序,及 JSON 解析。对于长时间运行的计算密集型操作,将其放在 Dispatchers.Main 调度器中会阻 ...
2021-02-06 · 阅读 6260 · 字数 112
kapt 是什么 kapt 是 Kotlin Annotation processing tool 的缩写。 kapt 与 annotationProcessor 的区别 annotationProcessor 是 Android java 项目中的使用方法 kapt 是 kotlin 项目使用的 First of all, the Kotlin Annotation processing tool (kapt) uses the Java compiler to run annotation processors. If your project contains any Java c ...
2021-02-06 · 阅读 10272 · 字数 239
Android 4.1.2 测试 Android Room 的使用,在 coroutine 中调用 Room.databaseBuilder 时,报错 AppDatabase_Impl does not exist Google 了半天没有头绪,这个报错也太抽象了。最后在参考了 Room 官方文档之后, 才发现是 gradle 的配置问题。 解决方法 修改 app gradle.build 的配置,增加 plugin kotlin-kapt,如下: plugins { id 'com.android.application' id 'kotlin-android' ...
2022-11-25 · 阅读 4268 · 字数 273
概述 在 activity 中监听 ViewModel 中数据的变化,当有变化时,将对应的数据显示在界面组件上 LiveData 在 ViewModel 中使用,上面监听的数据类型就是 LiveData 类型。 同时可用于 Activity 及 Fragment 间的数据共享 使用逻辑 在 activity 内新建一个 ViewModel,监听数据变化 当有数据变化时,在回调中,更新 UI View 的展示 ViewModel 内部则类似微信小程序的 data,里面定义一堆变量,监听的就是这些变量的变化,然后通过 postValue, setValue 这种类似小程序 setData 的 ...
2021-02-05 · 阅读 5874 · 字数 486
在看 Android Room 时,不能理解的是,既然有了 Dao 层,为何还要再加上一层 Repository 的封装。 看了一下 Google 官方对 Android Repository 的介绍: https://developer.android.com/codelabs/android-room-with-a-view-kotlin#8 概括来说 Repository 解决了多少数据源的问题。即一个 App 的数据来源可以是: 本地 SQLite 数据库。使用 Dao 访问。 远端服务器。使用 HTTP API 接口访问。 Repository 将这两种情况进行封装,让你可以使用 ...
2021-02-03 · 阅读 3357 · 字数 321
使用场景,例如,点击按钮获取输入框的内容。就需要写一堆 findViewById 的代码。 Android Studio 3.6 之后,可以使用 View Binding 来简化这个操作。 而且在绝大部分场景下,view binding 可以替代 findViewById。 修改 build.gradle 启用 view binding 编辑 Module build.gradle 的 android section, 添加 buildFeatures { viewBinding = true } 然后,点击编辑区域顶部的 Sync Now 来更新 gradle 配置。 这样就可以在 ac ...
2021-02-03 · 阅读 18754 · 字数 92
Android Studio 中报错: 02/03 10:12:56: Launching 'app' on No Devices. Error while waiting for device: Could not start AVD 打开 AVD Manager,点击 troubleshoot,可以看到提示: Enable VT-x in your BIOS security settings (refer to documentation for your computer). 于是重启电脑,在显示联想 Logo 时,按 F12 进入 BIOS 设置,找到 Inter Virtu ...
2021-02-01 · 阅读 3096 · 字数 289
Navigation 组件适用场景 一个 main activity 包含多个 fragment, 多个 fragment 相互跳转时,需要用到 Navigation 组件。 一个 App 包含多个 activity 时, 每个 activity 都需要有一个独立的 Navigation 组件来处理内部 fragment 切换。 The Navigation component is designed for apps that have one main activity with multiple fragment destinations. The main activity is ...
2021-01-31 · 阅读 4072 · 字数 309
使用 Android Studio 的 Basic Activity 模板创建了新项目。 Basic Activity 内置了: 一个底部 FAB 按钮 两个 fragment 可以相互切换 但是,我想实现的交互效果是: 点击 FAB 按钮,由第一个 fragment 切换到第二个。 实现代码 第一个 fragment 的 onViewCreated 尾部添加 activity?.findViewById<FloatingActionButton>(R.id.fab)?.apply { show() setOnClickListener { findNavControl ...
2021-01-31 · 阅读 9572 · 字数 129
每次打开 Android Studio 都有一些插件提示升级,非常讨厌。特别是很多插件是我不需要的,例如之前为了体验 flutter 按照的 dart 和 flutter 插件,没用,且经常更新。 卸载方法 settings - plugins - 取消勾选需要卸载的插件。 然后选择 Uninstall 即可。 Android Studio 4.1.1 如图: 重启 Android Studio 之后,再次回到这个界面,就会发现相应的插件已被卸载。 ...
2021-01-17 · 阅读 4749 · 字数 294
我想用 Android Jetpack Compose 新建一个 FloatingActionButton,找到 StackOverflow 上的一个答案,发现居然看不懂。。。 感觉还是概要地了解一下 Jetpack Compose 的布局基础比较好。 官方 Compose 布局文档 参考这里 https://developer.android.com/jetpack/compose/layout Column 最常用的自上而下的布局: import androidx.compose.foundation.layout.Column Column { Text("第一行&q ...
2021-01-17 · 阅读 7422 · 字数 287
Android Jetpack Compose 里可组合函数这个名字太唬人,一眼看上去,一头雾水。 Composable 的英文翻译 可组合函数,英文原文为 Composable Function。 我一直以为 Compose 只有“写作”的意思,原来其还有“组成”的意思。所以,Composable 可以翻译为“可组合”。 可组合函数的功能 代码中定义 APP 的 UI。 可组合函数的定义 函数前,加上注解 @Composable。例如,使用 Android Studio 中自带的 Empty Compose Activity template 创建的 App,自带一个可组合函数 Greeti ...
2021-01-14 · 阅读 3766 · 字数 218
我想尝试一下 Android Jetpack Compose 来写界面,但是官方推荐使用 Android Studio Canary build 版本。 我本机上有 Android Studio 4.1 稳定版,无法直接升级为 Canary build。只能重新下载。 但是,下载速度感人,国内直接下载被屏蔽;使用海外服务器中转 4K 每秒的速度 。。。 迅雷下载 如果是直接将 Chrome 中的下载地址复制到迅雷,下载速度同样为 0。 这个地址为 https://r3---sn-4g5e6nze.gvt1.com/edgedl/android/studio/ide-zips/2020.3.1 ...
2020-12-28 · 阅读 2759 · 字数 445
无法忍受老小米手机电池续航能力越来越弱,加上卡顿,所以决定买个新手机。纠结了好久,看同事入手的红米 k30 至尊版确实不错,就选择了同款。 惊喜之处 小米换机迁移数据和应用很方便。连微信聊天记录都自动迁移。只需要重新安装 google play,其他应用无缝迁移。 充电快,确实肉眼可见的速度。 电池续航能力逆天,也可能是之前老手机电池不行了,总之,玩一天还不用充电确实舒服。 我最喜欢的是弹出摄像头这个设计。对比了几款小米手机,实在无法接受屏幕上钻个孔的设计,还是完整屏幕看着舒服。 小米商城抽中一个小米10周年体恤衫,还有一个圣诞红包。 Android 10 的权限控制进一步完善,对支付宝这种 ...
2020-06-07 · 阅读 10433 · 字数 241
Go谷歌安装器 提示需要安装 “华为gms安装器”,但是下载进度显示 100%,但是一直在下载中。 原来是因为,华为禁止了三方程序的自动安装,且将“华为gms安装器”识别为危险程序。 华为gms安装器无法安装 先下载应用汇,然后在里面搜素“gms安装器”。 点击安装,会提示“该应用可能损害您的设备 禁止安装”。 此时,打开华为手机的系统设置 - 安全和隐私 - 更多安全设置: 启用“未知来源应用下载” 启用“未知来源应用安装”,这里需要注意,反复开启,但是不要勾选“开启应用验证” 这样就可以安装了。 然后把“应用汇”卸载就行了。 Google Play 正在核对信息 需要保证你的网络能正常 ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust 提示词 |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |