学习分享
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
另外也有一些朋友可能会借助一些第三方的工具,比如说SQLite Expert。这种工具是在电脑上用来查看数据库文件的,因此需要先想办法将手机中的数据库文件导出到电脑上(这一步也并不容易,因为内置存储空间的文件很难导出),然后再用SQLite Expert打开该文件即可查看其中的数据。
不管使用哪种方式,看上去都不是一件简单的事情。有的时候我在开发过程中遇到一些数据库的问题,一想到要用这么繁琐的步骤才能查看到数据库当中的数据,我宁愿换一种解决问题的思路。
Google在过去一直没有针对数据库调试这方面提供了一个简便的解决方案,这是我认为非常不人性化的一点。
好消息是,最新的Android Studio 4.1当中终于内置了Database Inspector这个工具,在很大程度上解决了数据库调试困难的问题。并且我认为,Google早就应该提供这个工具了。
而我新开发的这个开源项目同样也是为了解决这个问题。
最开始想到去做这样一个开源项目,主要是受到LeakCanary的启发。LeakCanary相信很多朋友都用过,我们只需要将LeakCanary的库集成到项目当中,LeakCanary就能自动检测当前项目的内存泄漏情况,并通过可视化的界面将内存泄漏问题展示给开发者。
然后我就想到,我是不是也可以开发一个开源库,当任何项目集成了这个开源库后,就自动扫描当前项目的内置和外置存储空间,把所有的数据库文件都扫描出来,然后同样提供一个可视化的界面以方便开发者随时查看数据库中的数据。
有了这个库,当我们在开发过程中再次遇到数据库问题时,直接通过可视化界面查看一下数据库当中真实的数据是什么样的,哪里出了问题就一目了然了。
虽然听上去和Database Inspector的功能有点重叠,但其实它们的目标场景是完全不同的。Database Inspector需要手机连到电脑上,然后在Android Studio里查看数据库当中的数据。而我开发的这个开源库不需要连接电脑,只需在手机上即可查看(有点类似于Profiler和LeakCanary之间的关系)。
我给这个开源库起名为:Glance,意为一瞥的意思。我希望能让开发者们通过快速一瞥即可定位开发当中遇到的数据库问题,所以起了这样一个名字。
确定了项目名和设计思路之后,接下来我就开始动手开发了。事实上,Glance的开发过程一路都比较顺利,可能主要是因为之前开发过LitePal,所以在数据库方面积累了很多经验。
并且,我对Glance的定位不仅仅只是一个协助查看数据库内容的工具,同时也是一个非常好的学习项目。在编写Glance的时候,我特意使用了许多Google目前最推荐使用的各项新技术,包括Kotlin、协程、Paging3、App Startup、MVVM等等等等,基本都是按照最标准的项目开发规范去实现的。所以,学习这个项目的源码相信也会对你的开发水平有非常大的帮助。
我大概是从8月中旬的时候开始着手编写的这个项目,到11月份的时候基本就将所有主要的功能都开发完成了。期间还进行了一轮小范围的内部测试,几位热心群友帮我发现了好几个颇为严重的bug,我又对此一一进行了修复。
那么现在,我认为这可以算是一个相对比较稳定的版本了。但是由于毕竟是全新的开源库,我还不敢直接发布1.0.0版本,因此这次发布的是1.0.0-alpha01版本。大家如果在使用的过程中发现了任何问题,很正常,反馈给我即可,我会尽快进行修复。
好了,接下来就向大家介绍Glance的具体用法吧。其实真的非常非常简单,只需要使用如下语句将Glance引入到你的项目当中:
dependencies {
debugImplementation ‘com.glance.guolindev:glance:1.0.0-alpha01’
}
然后就结束了。
没错,就是这么简单,Glance没有提供任何对外的API,所以也不需要你进行什么代码对接操作,只要将依赖库引入到你的项目当中,就算是对接完成了。
注意上述的引用语句中我们使用的关键字是debugImplementation,这个关键字相信大家用的比较少,通常我们使用的都是implementation关键字。那么debugImplementation是什么意思呢?它表示只有在你的项目是debug版的时候,才会将Glance引入到你的项目当中,而release版是不会包含Glance库的。
这是一种最为安全的做法,因为如果release版中引入了Glance库,相当于给你的应用程序留了个后门,是有可能引起数据库安全问题的。
接下来就像平常那样运行你的程序就可以了,你会发现,你的手机桌面上将会多出一个Glance的图片,如下图所示。
这个图标就是引入了Glance库之后自动生成的,点击该图标即可打开Glance的可视化界面,如下图所示。
在这里,Glance会自动开始扫描当前应用程序的内置和外置存储空间,将所有的数据库文档全部搜索到,并一一列出。
比如上图中的demo1.db就是我当前项目工程中的一个数据库文件,internal storage表示它是存放在内置存储空间下的。
点击demo1.db,即可打开这个数据库文件,并将该数据库中的所有表罗列出来,如下图所示。
当然这里列出的表并不全部都是由我们自己创建的,比如android_metadata、sqlite_sequence这些表就是自动生成的。但Glance并不会对此进行区分,而是会把它们全部罗列出来。
接下来点击magazine表,我们即可查看表中的数据。横向滚动可以查看所有的列,纵向滚动可以查看所有的行,如下图所示。
这里对表中的数据进行加载使用了分页技术,所以即使你的表中有上百万条数据,也会非常快速地加载出来。而Glance的分页技术是使用Paging3实现的,对Paging3感兴趣的朋友可以参考参考这部分的源码。
到这里为止,我们就可以非常方便地随时查看当前应用程序数据库中的数据了。相比于之前还要想办法导出数据库文件,发送到电脑上,再借助第三方工具进行查看,是不是简单了千百倍?
即使相比于Database Inspector,我认为Glance也是有很大优势的,毕竟你不需要借助电脑,也不需要打开Android Studio才能查看。
另外,假如你的数据库文件发生了变化,Glance也可以迅速地感知到。比如我们向当前应用程序的外置存储空间当中添加一个新的数据库文件,如下图所示。
最后
最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2019-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。
还有 高级架构技术进阶脑图、高级进阶架构资料 帮助大家学习提升进阶,也可以分享给身边好友一起学习。
一起互勉~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!