新版Glance发布,更好用的Android数据库调试助手

2 篇文章 1 订阅
订阅专栏

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

Glance是一个由我开发的用于调试Android数据库的开源库,无须借助电脑和数据线,直接在手机上就可以查看当前App中数据库的内容。

Glance的1.0版本于去年12月份推出,具体功能可以参考这篇文章 我又开发了一个非常好用的开源库,调试Android数据库有救了 。

然而自从首个版本推出之后,Glance就再也没有更新过。主要还是因为我实在是太忙了,平时只能用零散的业余时间写写博客,还有3个开源项目要同时维护,能分配到Glance上的时间实在有限。

然而就这样零零散散地写了8个多月的代码,Glance确实变得比之前更加优秀了。虽然增加的一些新功能看上去并不是很重要,但累积多了之后,我认为这已经足以发布一个全新的版本了。

那么Glance 1.1.0版本今天正式发布,就让我来带着大家看看新版的Glance到底多了哪些新功能吧。

支持显示Room数据库

之前有不少朋友在使用Glance的时候向我反馈,说有些数据库Glance是显示不出来的,包括使用Room创建的数据库。

之所以会出现这样的情况,是因为Glance在搜索数据库文件时只是简单地以.db后缀名来作为判断条件。这种方式优点是效率非常高,但缺点也很明显,搜索的结果不准。因为有些数据库文件并不是以.db为后缀的,比如说Room创建的数据库默认都是无后缀的。

因此,在新版的Glance当中,我将搜索规则进行了修改,不再是简单地以后缀名来进行判断,而是真正地去判断该文件是不是一个数据库文件。

Android上的数据库文件如果以二进制的方式去读取它,它的头部一定是以"SQLite format 3"开始的,所以通过以下代码就能够准确地判断出一个文件是不是数据库文件:

/**
 * Check this file is valid SQLite db file or not.
 */
fun File.isValidDBFile() = try {
    val reader = FileReader(this)
    val buffer = CharArray(16)
    reader.read(buffer, 0, 16)
    val str = String(buffer)
    reader.close()
    str == "SQLite format 3\u0000"
} catch (e: Exception) {
    e.printStackTrace()
    false
}

虽然对所有文件都执行这样的判断必然会影响一定的搜索效率,但是Glance还同时拥有对数据库文件的缓存机制,之前搜索过的结果会迅速展示出来,因此在这方面能弥补一些效率的问题。

允许横向纵向同时滚动

Glance查看数据库表内容的界面做得还算是比较精美的,如下图所示:

这个界面是使用横向ScrollView加纵向RecyclerView的方式来实现的,所以支持在横向和纵向两个方向上滑动。

但是同一时刻,我们只能进行横向滑动或纵向滑动,不支持在横向和纵向上同时滑动。

这里我要特别感谢ultimateHandsomeBoy666这位网友,他向Glance提交了一个Pull request,使得我们可以在横向和纵向上同时滑动来查看数据。

至于实现的原理也很简单:

/**
 * deal with the motion event to scroll, while passing the event downwards
 */
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
    onTouchEvent(ev)
    return super.dispatchTouchEvent(ev)
}

/**
 * do not intercept touch event so that child scrollable view can also receive event to scroll
 */
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean = false

就是在外层的横向ScrollView当中,我们不使用默认的onInterceptTouchEvent拦截机制,而是让它不要拦截。

然后在dispatchTouchEvent的时候,我们除了自己处理这个Touch事件之外,同时也将事件分发出去,这样RecyclerView就可以一起处理这个事件了。

最终的效果如下图所示:


支持多应用入口区分

Glance的入口是会在手机桌面创建一个Glance的图标,点击该图标即可查看你的应用中包含的数据库文件。

然而,我没想到的一个问题是,假如一个手机上安装了很多个应用,而这些应用都引入了Glance库,那么会导致你完全分不清楚每个Glance图标到底对应的是哪个应用。

这个问题也是由一位热心网友提出我才意识到的:

可以看到,桌面上一堆Glance图标,已经完全不知道哪个是哪个了。

刚看到这个Bug时,我还没想好要怎么修,因为那个时候正在忙着写另外一个功能。没想到几天之后发现ultimateHandsomeBoy666这位网友又提了一个Pull request,将这个问题给修复了。

ultimateHandsomeBoy666采取的方案是,桌面Glance的入口图标不再命名成Glance,而是命名成和主App一样的名字,但是图标仍然保持Glance的样式,以和主App做区分。这样即使有再多的App引用Glance,也不会造成混乱了。

我认为这种修改方式非常恰当,再次感谢ultimateHandsomeBoy666这位朋友的帮助。

允许修改数据库内容

好吧,我这8个月的主要工作应该都在这个功能上了。

之前Glance的主要功能是帮助你查找出当前应用中所包含的所有数据库,并将它们的内容展示出来。

也就是说,你只能看一看里面的数据而已。但如果想要对其中的数据进行修改,这是不可以的。

而修改数据是一个非常有用的功能,也是长期以来不少朋友的呼声。因此Glance 1.1.0版本最重磅的一个功能就是,允许开发者直接在手机中对当前应用的数据库数据进行修改。

至于修改数据的方式也非常简单,直接在你想要修改的那条数据上双击即可,如下图所示:

这种便捷的可视化界面修改数据的方式相信许多开发者朋友都是非常需要的,你完全不需要借助电脑,全部在手机上就可以完成。

另外我想说的是,Glance展示数据库内容的功能是使用Paging 3实现的。之前我在写讲解Paging 3用法文章的时候,有不少朋友问我在Paging 3中要如何才能修改数据,听上去像是一个非常难以完成的事情。由于我当时确实没有尝试过修改数据这个功能,所以也回答不上来这些朋友的问题。

但是这次在Glance中实现修改数据功能之后,我发现Paging 3在修改数据上并没有什么无法实现或难理解的地方,和正常使用RecyclerView时修改数据的方法几乎是差不多的。因此以后如果还有朋友在使用Paging 3时有修改数据的疑问,不妨可以参考下Glance的源码实现。

最后,使用Glance来修改数据还有一个限制,就是表中一定要有主键,否则是无法修改的。因为主键是对一行数据的唯一约束,如果没有主键的话,Glance是无法知道用户想要修改哪一行数据的。

如何升级

关于Glance新版本的内容变化就介绍到这里,升级的方式非常简单,修改一下dependencies当中的版本号即可:

repositories {
  google()
  mavenCentral()
}

dependencies {
    debugImplementation 'com.guolindev.glance:glance:1.1.0'
}

注意现在一定要使用mavenCentral仓库,而不能再使用jcenter了。至于原因,可以参考我的这篇文章 浅谈JCenter即将被停止服务的事件 。

如果你对Glance的源码感兴趣,可以访问Glance的项目主页:

https://github.com/guolindev/Glance


如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》, 点击此处查看详情。


关注我的技术公众号,每天都有优质技术文章推送。

微信扫一扫下方二维码即可关注:

Android 12 SplashScreen API快速入门
郭霖
09-14 1688
Android 12正式版即将发布。这次的Android系统变化当中,UI的变化无疑是巨大的。Google在Android 12中采取了一种叫作Material You的界面设计,一切以你...
大数据课程学习流程
热门推荐
风口的猪2016
04-28 1万+
第一阶段 Java编程基础→oracle/mysql→sql优化→jdbc 第二阶段 JavaScript基础→JavaScript深入→jQuery→jquery easyui→bootstrap 第三阶段 Servlet/jsp→ajax→xml→svn→maven实战项目一第四阶段 Struts2→hibernate→spring/spring mvc→项目实战二→web serv
Android-一个用于调试android数据库和sharedpreferences的库
08-13
一个用于调试android数据库和shared preferences的库
调试手机中数据库的福音:Android-Debug-Database
u012381726的博客
03-03 8231
作者: linheimx 简书: http://www.jianshu.com/p/89ccae3e590b  前言 一般,我们调试手机中的数据库是很麻烦的,通常来说是如下几种方式: 将手机中的SQLite数据库导出到电脑,通过电脑端的软件来查看这个数据库,执行相关的SQL语句,看结果如何。Root手机,在手机上安装RE文件管理器,进入应用程
OpenStack Yoga版安装笔记(五)glance安装
zkyqss的博客
07-06 1049
OpenStack镜像服务,代号glance。通过镜像服务,用户可以发现、注册、下载虚拟机镜像。利用镜像服务的REST API接口,用户能够查询虚拟机镜像的元数据(即虚拟机镜像信息)、下载所需的虚拟机镜像。虚拟机镜像可以存储在简单的文件系统,或者对象存储系统(比如OpenStack对象存储)等多种位置,并通过镜像服务进行访问。本次安装为了简化操作,将镜像上传并存储在托管镜像服务的控制节点上的一个目录中。默认情况下,这个目录是。OpenStack的镜像服务是基础设施即服务(IaaS)的核心组成部分。
Android Debug Database 一个好用的Android数据库调试查看工具
喵了个呜的博客
03-15 4193
平时要查看手机数据库内容就很麻烦了,就算把db文件下载到电脑上了,还需要下载专门的数据库工具来查看。而且每次修改数据库都需要重新下载,很麻烦。 然后今天发现了Android Debug Database, githud地址:https://github.com/amitshekhariitbhu/Android-Debug-Database先看看他有什么功能吧: 直接查看手机该app的数据库和s
android数据库调试管理工具FastAndr-dbms
hotapk_cn的专栏
12-11 1002
由于在android开发中涉及到数据库方面的开发的过程中遇到很多麻烦和困扰,就着手写了个android数据库调试管理工具FastAndr-dbms,希望对大家有点帮助 二话不说,先上图界面还是比较小清新….框架功能使用功能 可视化数据编辑界面 可配置服务端口号 可增、删、改、查 数据库及SharedPreference的数据 缺陷 1. 不可自定义sqlite语句查询 2. 数据库获取到的boo
Android Studio功能 - Database Inspector 调试数据库
tesol_service的博客
11-16 456
Android Studio功能 - Database Inspector 调试数据库
Glance是一个简单易用的Android数据库调试库。-Android开发
05-26
Glance是一个开放源代码的Android数据库工具包库,可以帮助您使用干净的UI界面浏览所有数据库数据。 Glance Glance是一个开放源代码的Android数据库工具包库,可以帮助您使用干净的UI界面浏览所有数据库数据。 ...
Glance:一个简单方便的Android数据库调试
05-11
Glance是一个开放源代码的Android数据库工具包库,可以帮助您使用干净的UI界面浏览所有数据库数据。 Glance受LeakCanary启发,可以作为依赖库包含在您的项目中。 它将搜索当前应用程序的内部和外部存储,以自动查找...
如何自学大数据开发?
juan189的博客
05-03 3665
大数据技术怎么自学?大数据开发如何自学? 我们在学习大数据开发前需要先找到适合自己的方式方法,首先需要审视一下自身的情况,是否是以兴趣为出发点,对大数据是不是自己是真的感兴趣吗,目前对大数据的了解有多少,自己的学习能力和理解能力是否适合学习。如果是跨行业转岗是否做好了心理准备。根据不同基础水平可以分为三类: 第一类:零基础学员,对大数据行业和技术一无所知; 第二类:有一定的编程基础,对大数据...
CAN调试助手
03-29
CAN测试,一款比较好用的CAN调试助手,操作简单直接上手即可
Android数据库查看工具
01-12
解压后就能使用的简单的数据库工具····
很好用的can调试助手
04-12
can调试助手,很好用的,值得一用的工具
androidstudio代码定位神器 CodeGlance 内附安装说明
03-24
快速代码定位神器,androidstudio代码定位神器 CodeGlance内附安装说明 下载完解压打开plugins从本地按照说明安装即可
android测试sql,测试和调试数据库  |  Android 开发者  |  Android Developers
weixin_36087895的博客
05-26 209
在使用 Room 持久性库创建数据库时,请务必验证应用的数据库以及用户的数据是否稳定。本页介绍了如何测试数据库和执行调试步骤,以帮助您通过测试。测试您的数据库您可以通过以下两种方式测试数据库:在 Android 设备上测试。在主机开发计算机上测试(不推荐)。如需了解专门针对数据库迁移的测试,请参阅测试迁移。注意:在针对应用运行测试时,可以借助 Room 创建 DAO 类的模拟实例。这样一来,如果您...
推荐项目:Android Debug Database —— 手握数据库调试的神器
最新发布
gitblog_00426的博客
08-08 522
推荐项目:Android Debug Database —— 手握数据库调试的神器 Android-Debug-DatabaseAndroid Debug Database是一个Android应用程序,用于查看和编辑SQLite数据库文件。它可以显示数据库的结构、执行SQL查询和修改数据。这个工具对于开发人员在调试和测试过程中非常有用。项目地址:https://gitcode.com/gh_mi...
SQLite数据库Android中的异常处理与调试技巧
m0_71524094的博客
04-04 399
轻量级:SQLite 以精简的代码实现了一个完整的 SQL 数据库引擎,不依赖于其他的库或者服务器,因此非常适合用于嵌入式设备或者移动应用中。原子性事务:SQLite 采用基于日志的事务处理机制,即所有的 SQL 操作都被记录在一个日志文件中,这样可以保证即使在崩溃或者异常情况下,数据库也能够回滚到之前的状态。自动索引:当用户进行查询操作时,SQLite 会自动根据查询条件创建索引以提高查询性能。同时,SQLite 还支持多种类型的索引,包括 B-tree 索引和哈希索引。
探秘Glance:一款高效轻量级的Android启动器库
gitblog_00070的博客
04-25 353
探秘Glance:一款高效轻量级的Android启动器库 GlanceA simple and handy Android database debugging library.项目地址:https://gitcode.com/gh_mirrors/glan/GlanceAndroid开发领域中,提升用户体验一直是开发者们追求的目标之一。对于应用的启动速度和界面展示,Glance(仓库链接:...
glance安装与配置详解:数据库创建、用户授权与服务注册
首先,文档强调了在Controller节点上为Glance服务创建数据库和授予必要的权限,通过MySQL命令行完成数据库glance的创建,并授权给Glance用户,确保其能访问数据库。 其次,文档指导读者在Keystone中创建Glance用户...
写文章

热门文章

  • Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 415409
  • Android新特性介绍,ConstraintLayout完全解析 410008
  • Android Volley完全解析(一),初识Volley的基本用法 361481
  • Android LayoutInflater原理分析,带你一步步深入了解View(一) 339072
  • Android Fragment完全解析,关于碎片你所需知道的一切 317329

分类专栏

  • Android精华教程 46篇
  • Jetpack Compose 7篇
  • PermissionX 8篇
  • Glance 2篇
  • Android数据库高手秘籍 13篇
  • Glide最全解析 8篇
  • Android疑难解析 65篇
  • Android第一行代码 5篇
  • Android数据库高手秘籍 13篇
  • Java设计模式透析 5篇
  • Ruby设计模式透析 5篇
  • 随笔 24篇

最新评论

  • Android LayoutInflater原理分析,带你一步步深入了解View(一)

    简单的复杂369: 其实,本质就是inflate方法中root参数指定null的时候,layout_width/height均会失效,且会被置成默认值;如果root不为null,layout_width/height是会生效的

  • kotlin-android-extensions插件也被废弃了?扶我起来

    niunan: 2024年9月8日,Android Studio Koala | 2024.1.1, 开始跟着第一行代码(第三版)做示例,就第三章开头一个简单的 点击按钮弹框框搞了大半天。。红线一大堆。。晕啊。。搞死了。。不过也终于让我搜索到了这篇文章了。。嘿嘿。。自己写个读书笔记记下来。。。 【有道云笔记】IT0061.第一行代码:Android(第3版) https://note.youdao.com/s/MZGST6Un

  • Android 15新特性,强制edge-to-edge全面屏体验

    parade岁月: 使用setOnApplyWindowInsetsListener应该就不用fitsSystemWindows了

  • 写给初学者的Jetpack Compose教程,高级Layout

    chituhuan: at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureOnly(MeasureAndLayoutDelegate.kt:407) at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:1058) at android.view.View.measure(View.java:25090) at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release(ComposeView.android.kt:302) at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt:289) 发现是从这里开始。怎么驱动的呢,

  • 写给初学者的Jetpack Compose教程,高级Layout

    chituhuan: "main@24518" prio=5 tid=0x2 nid=NA runnable java.lang.Thread.State: RUNNABLE at androidx.compose.foundation.layout.BoxMeasurePolicy.measure-3p2s80s(Box.kt:103) at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126) at androidx.compose.ui.ZIndexNode.measure-3p2s80s(ZIndexModifier.kt:59) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116) at androidx.compose.foundation.layout.OffsetNode.measure-3p2s80s(Offset.kt:191) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:252) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:251) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:131) at androidx.compose.runtim

大家在看

  • 【快速上手】linux环境下Neo4j的安装与使用
  • 简单生活的快乐 337
  • 黑神话:悟空 后话 189

最新文章

  • Android 15新特性,强制edge-to-edge全面屏体验
  • 写给初学者的Jetpack Compose教程,高级Layout
  • 写给初学者的Jetpack Compose教程,用derivedStateOf提升性能
2024年6篇
2023年9篇
2022年11篇
2021年17篇
2020年20篇
2019年9篇
2018年7篇
2017年10篇
2016年14篇
2015年13篇
2014年26篇
2013年45篇

目录

目录

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家价格实惠的玻璃钢雕塑造型泰安玻璃钢马雕塑大理玻璃钢雕塑直供河南城市几何玻璃钢雕塑着色玻璃钢雕塑图片舒达床垫玻璃钢雕塑ip制作福建欧式玻璃钢雕塑批发广东商业商场美陈采购济源附近玻璃钢雕塑商场美陈互动玩法绵阳东莞玻璃钢雕塑无锡园林玻璃钢花盆市政金色玻璃钢雕塑玻璃钢马雕塑摆件广州城建绿化玻璃钢花盆十堰园林玻璃钢雕塑价格南昌环保玻璃钢雕塑销售厂家杭州玻璃钢牛雕塑景区玻璃钢雕塑价格长沙定做玻璃钢卡通雕塑十堰小品系列玻璃钢雕塑厂家南通高档玻璃钢花盆福建人物玻璃钢雕塑价位昆山商场大型美陈清远玻璃钢卡通雕塑定制宁波抽象玻璃钢雕塑哪家便宜铜仁商场美陈材料中原玻璃钢雕塑南瓜玻璃钢雕塑造型西安玻璃钢雕塑摆件批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化