首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开发者也是用户 - 第二部分:改善 UI 和 API 可用性的五条指导原则

比如,查询数据库时,Room 提供不同的返回值,允许用户进行同步查询,使用LiveData,或者如果他们喜欢的话,使用 RxJava2 的 API。...避免显示状态码或者异常类名称,用户不会知道如何处理这些信息的。 ? 创建事件时的错误信息。 来源 输入区域失去焦点时尽快显示错误信息,不要等到用户点击提交表单的按钮。更不要等到服务端传来错误信息。...例如,试图把 null 值插入一个有 NON NULL 限制的列,就是一种异常的情况,会抛出 SQLiteConstraintException。 抛出具体的异常。...通过 [createBitmap](https://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap%...比如, Room ,如果一个查找主线程运行,用户将会获得 java.lang.IllegalStateException: 不能在主线程访问数据库,因为它有可能把 UI 锁住较长的一段时间。

84130
您找到你想要的搜索结果了吗?
是的
没有找到

如何用 Android vitals 解决应用程序的质量问题

Android vitals 显示过度唤醒时你应该怎么做? 要解决过度唤醒的问题,请先确定你的应用在哪些地方设置了唤醒警报,然后降低触发这些警报的频率。...要确定你的应用在哪些地方设置了唤醒警报,请在 Android Studio 打开 AlarmManager 类,右键单击 RTC_WAKEUP 或 ELAPSED_REALTIME_WAKEUP 字段选择...对于用户来说,ANR 是当他们尝试与你的应用进行交互时,该界面被冻结。界面保持冻结几秒钟后,会显示一个对话框,让用户选择等待或强制应用程序退出。...主线程(有时称为 UI 线程)负责响应用户事件刷新屏幕上每秒绘制六十次的内容。因此,将任何可能延迟其工作的操作都转移到后台线程是至关重要的。 Android vitals 如何显示 ANR?...调试版本中使用这个工具可以捕获主线程上意外的磁盘和网络访问。

2.2K10

使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间

如果您正期待着应用该工具,那现在是时候去尝试了。 为何要构建 KSP Android 团队,我们经常会向开发者提出这样一个问题: 就现阶段而言,开发应用时遇到的最大痛点是什么?...多年来,我们一直稳步优化 Android 构建工具链,现在我们非常高兴能够通过 KSP 来实现这些优化。...此举大幅提升了构建速度 (对于 Room 的 Kotlin 测试应用 而言速度提高了 2 倍),同时也意味着 KSP 可以Android 以及非 JVM 环境 (如 Kotlin/Native 和...例如,要在 Gradle 模块中使用 KSP 版 Room,您只需将 KAPT 插件替换为 KSP 替换 KSP 依赖项: 您可以查看 Room 版本说明 以了解更多信息。...同时,我们也更新了一些特定的 Android 库,您可以立即尝试,体验改进后的强大性能。也欢迎您持续关注官方微信公众账号,随时获取最新资讯。

3.7K10

CI 中使用 Benchmark 进行回归分析

那么我们要如何处理 CI 的基准数据呢? 基准测试 vs 正确性测试 一个工程里就算有数千个正确性测试,也可以轻易通过信息折叠显示在数据面板上。下面就是我们 Jetpack 的测试信息: ?...这使得我们可以一个方差更高的大型 (对于移动平台来说) 数据库基准测试的系统运行纳秒级精度的微型基准测试。 您也可以自己尝试!...点击运行按钮,尝试我们 CI 处理 WorkManager 基准测试产生的数据的算法。...当它开始运行时,您可以尝试用下面两个参数控制算法:  宽度  (WIDTH) — 要涵盖多少个代码提交的结果 阈值  (THRESHOLD) — 达到什么程度时会把回归显示面板上 增加宽度值会降低不一致性...关于从何处开始的注意事项:  基准测试捕获关键的滚动界面 为与第三方库交互的关键位置和高 CPU 消耗的任务添加性能测试 要像对待测试回归问题一样对待改进——它们值得深究 延伸阅读 如果您想了解更多

1K20

Google 推荐 MVVM 架构中使用 Kotlin Flow

Google 推荐 MVVM 使用 Kotlin Flow Google 推荐 MVVM 中使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,...Kotlin Flow Repositories 的使用 如果我们想在 Flow 中使用 Retrofit 或者 Room 进行网络请求或者查询数据库的操作,我们需要将使用 suspend 修饰符的操作放到...flow 请求数据之前,做一些准备工作,例如显示正在加载数据的进度条 } .catch { // 捕获上游出现的异常 }...flow 请求数据之前,做一些准备工作,例如显示正在加载数据的进度条 } .catch { // 捕获上游出现的异常 } .onCompletion { // 请求完成...flow 请求数据之前,做一些准备工作,例如显示正在加载数据的按钮 } .catch { // 捕获上游出现的异常 }

4.1K20

【错误记录】Android 中使用 Room 框架访问数据库报错 ( cannot find implementation for xx.xxDatabase. xxDatabase_Impl )

一、报错信息 Android , 使用 Room 数据库访问框架操作数据库 , 运行是报如下错误 ; 核心报错信息 : cannot find implementation for xx.xxDatabase...代码,应该使用 @Database、@Entity 和 @Dao 等注解来标记相应的类和接口。 检查 Room 数据库的实现类是否生成成功。... Android Studio ,可以查看项目的 app/build/generated/source/kapt/debug 目录,检查是否有名为 StudentDatabase_Impl 的 Java...如果该文件不存在,则可能是由于 Room 的 kapt 编译过程出现了错误,需要查看编译日志修复相应的错误。...如果以上方法都不能解决问题,可以尝试清除项目并重新构建,或者使用 Android Studio 的 Invalidate Caches / Restart 功能来尝试解决问题。

63020

用手机从锁定的计算机偷取凭证信息

简介 Room362之前发布从锁定计算机盗取凭证信息一文,其中的方法很棒。...Android Tethering网络共享的具体实施,这些配置细节是硬编码到Tethering.java程序包的。...使用Responder劫持流量捕获凭证非常高效。特别是当用户在网上的动作比较活跃的时候(例如,浏览网页,访问内部共享等)。 从锁定机器盗取凭证 该攻击向量首先假定用户不在或者在网络不活跃。...连接一台Android设备,运行上面提到的Responder脚本。注意在执行Responder后的几秒钟,没有进行任何交互的情况下,用户的NTLM hash已经捕获到。下图展示了捕获到的数据: ?...脚本执行步骤,通过设置网络运行Responder启用网络共享功能。 ? 黄色部分为捕获到的hash 解决方案 操作系统和浏览器禁用自动代理配置设置,至少可以防止上述锁屏攻击。

1.6K80

Android | 迁移到搭载M1芯片的Mac时的问题

新近更换了搭载 M1 芯片的 Mac 电脑,将旧电脑中正常运行的项目拷贝过来运行时,出现了一系列的问题。本文对此进行相应的总结。 1.1....model)的 build.gradle 文件查找 android 节点下的 ndkVersion,由于 AndroidStudio 默认会将下载的 ndk 放置 /Users/用户名/Library...如果我们想在 访达 手动一级级的找到该目录,就需要通过 shift+command+. 将隐藏文件显示出来(再按一次该组合键即可重新隐藏)。...修改新电脑中的项目 一开始尝试将该库的缓存直接拷贝到新电脑的同级目录下,非常遗憾的是依旧编译失败。所以才考虑拷贝 aar 作为依赖项。...如下: 然后 build.gradle 文件删除 implementation 信息,如下图: 声明需要解析 libs 目录的 aar 文件,如下: 完成上述操作后,重新新电脑中编译项目

3.2K40

期待已久的动态数据库工具终于来了!

本地数据库的创建和管理是大多数移动应用工程的核心组件之一,一般会通过直接使用 SQLite 或 Jetpack Room 持久化库来完成。...最新的 Android Studio 4.1 (目前处于 Canary 版本) 内置了叫作Database Inspector (数据库检查器) 的工具,它可以帮助开发者已运行的应用检查、请求以及修改数据库...如果您使用 Jetpack Room 观察请求结果,对数据库的修改会直接体现在应用里。...Sunflower 是一款园艺类应用,它向开发者展示了基于 Android Jetpack 进行应用开发的最佳实践。所以强烈推荐大家克隆这个代码仓库,并且按照本文的操作尝试一下。...应用的 UI 似乎正常显示了所需浇水的日期。在下一步开发,我们也许可以增加一个提醒功能,当已经超出浇水日期的时候,可以向用户发出提醒。 快来尝试新推出的 Database Inspector!

2.1K30

如何使用NFCGate对Android进行NFC安全研究

功能介绍 设备内捕捉:捕获设备上运行的其他应用程序发送和接收的NFC流量。 中继:使用服务器两个设备之间中继NFC通信。...中继模式 导航条中进入“Settings”设置界面; 指定主机名、端口和会话; 确保服务器应用程序处于运行,并且可通过网络访问; 导航条中切换至“Relay Mode”(中继模式); 点击“Reader...”或“Tag”,其中一台设备为“Reader模式”,另一台则为“Tag模式”; 连接建立成功后,应用程序将显示绿色状态指示; 记录下的NFC流量可在Logging查看到,可供后续分析使用。...重放模式 导航条中切换至“Replay Mode”(重放模式); 选择需要重放的会话; 点击“Reader”或“Tag”来重放对应的会话流量; 新的NFC流量可在Logging查看到,可供后续分析使用...Support library - preference v7 bugfix Android Room Android Lifecycle 项目地址 NFCGate:【GitHub传送门】 参考资料

2K20

Google IO 2019 Android 应用源代码现已发布

作者: Takeshi Hagikura, 开发者计划工程师 今年的 I/O 应用大幅修改了现有功能添加了若干新特性。在这篇文章,我们将着重围绕其中几项主要变更进行说明。...实现过程,我们使用了 Room Jectpack 组件的全文搜索特性。...当用户搜索框输入要查找的内容后,检索项便会被用于查询演讲名称等数据。查询结果将立即显示屏幕上,因此,如果搜索字段发生任何字符更改,服务器会马上返回更新后的结果。...接着,用户便可以点击某个词条,导航至对应页面获取详细内容。...如果您对全文搜索有兴趣,欢迎查看我们的代码 (使用 Room 添加搜索功能,搜索结果包含分享人信息,搜索结果包含 codelab 信息,添加 Room 迁移路径)。 ?

1.6K10

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) , 实现了 使用 Room 框架访问 Android 的 SQLite 数据库的操作...androidx.lifecycle.Observer 监听器回调 更新 View 视图 ; View 视图层 : Activity / Fragment 负责视图显示的 系统组件 , 负责维护 Android...视图组件 , 显示的数据由 ViewModel 提供 ; 3、Room 与 LiveData 结合使用要点 对于 Room 框架使用来说 , Room 与 LiveData 结合使用 , Room 单独使用...框架主动查询数据库数据需保留除 LiveData 返回值外的正常查询方法 Room 框架 与 LiveData 结合使用之后 , Room 框架的 Dao 数据库访问接口中 定义了 LiveData...通过调用 ViewModel 视图模型 , 访问 Room 数据库框架 , 对数据进行增删改查 , 通过 LiveData 监听数据库的数据 , 如果数据库的数据发生改变 , 自动回调 LiveData

60820

android组件安全检测工具(内存检测工具memtest)

Android应用安全检测工具简介 1、测试工具集 Appie – 轻量级的软件包, 可以用来进行基于Android的渗透测试, 不想使用VM的时候可以尝试一下....动态分析器可以虚拟机或者经过配置的设备上运行程序,在运行过程检测问题。...APIMonitor-通过反编译后的Smali代码插入监控代码 4、网络状态分析和服务端测试 Tcpdump – 基于命令行的数据包捕获实用工具 Wireshark – Wireshark(前称Ethereal...网络封包分析软件的功能是撷取网络封包,尽可能显示出最为详细的网络封包资料 Canape – 可以对任何网络协议进行测试的工具 Mallory – 中间人(MiTM)攻击工具, 可以用来监视和篡改网络内的移动设备和应用的网络流量数据...所有的工具都共享一个能处理显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架 Proxydroid – Android ProxyDroid可以帮助的你设置Android设备上的全局代理

3.1K20

MVVM的数据持久化(一)——ROOM的集成

简介地址 https://developer.android.google.cn/training/data-storage/room/ RoomSQLite上提供了一个抽象层,以便在发挥SQLite...Room有3个主要的组件 Database: 包含数据库持有者,充当与应用程序持久化的、关系型的数据的底层连接的主要访问点。...注释包含与数据库相关联的实体列表。 包含一个具有0个参数的抽象方法,返回用@Dao注释的类。...要为一个entity添加索引,@Entity注解添加indices属性,列出你想放在索引或者组合索引的字段。 有时候,某个字段或者几个字段必须是唯一的。...import android.arch.persistence.room.Room import android.arch.persistence.room.RoomDatabase import android.content.Context

1.4K20

是时候更新手里的武器了—Jetpack架构组件简析

所以布局中就可以使用app:imageUrl,传值为String类型,系统就会找到这个适配器方法执行。...具有多个 Activity 目的地的应用,每个 Activity 均拥有其自己的导航图。 ” 所以说白了,Navigation就是一个Fragment的管理框架。怎么实现?...配置好每个Fragment,其中: app:startDestination 属性代表一开始显示的fragment android:name 属性代表对应的Fragment路径 action 代表该Fragment...这里就不细说了,感兴趣的可以去官网看看 官方文档 Demo代码地址 RoomRoom 持久性库 SQLite 的基础上提供了一个抽象层,让用户能够充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制...Activity,难免有些异步调用,所以就会容易导致界面销毁时候,这些调用还存在。那就会发生内存泄漏或者直接崩溃。

2.9K20
领券