1、SQLite
安卓数据库SQLite
Android中的数据库——SqLite
2、GreenDao
GreenDao 的简介和使用
GreenDao的总结
在AndroidStudio4.1.1上使用GreenDao
3、ROOM
Room数据库的使用与升级
GreenDAO的优点:
是一个开源项目,基本没有更新。
需要通过代码生成器生成实体类和DAO类。
没有编译时SQL检查,SQL语句错误只能在运行时发现。
需要手动编写迁移代码,稍显复杂。
性能非常出色,特别是在大量数据操作的场景下。适合对性能要求较高的应用。
Room的优点:
由Google官方开发和维护,作为Android Jetpack的一部分。
使用方便,提供了编译时检查和安全的数据库访问。
易于使用和理解,提供了注解处理器自动生成的SQL语句。
支持Kotlin协程,与LiveData、ViewModel等架构组件无缝集成,支持响应式编程。
提供了简洁的数据库迁移机制,通过Migration类来定义迁移策略。
支持常见的注解如@Entity、@Dao、@Insert、@Update、@Delete、@Query等。
提供编译时SQL语句检查,能够在编译阶段捕获SQL语法错误。
性能较好,但由于编译时检查和类型安全性,可能在某些场景下性能略微逊色于GreenDAO。适合大多数常见应用场景。
屏幕适配
Android 今日头条适配详解
Android 目前稳定高效的UI适配方案
Android屏幕适配方案
1、SmallestWidth适配(sw限定符适配)
SmallestWidth适配,或者称之为sw限定符适配。指的是Android会识别屏幕可用高度和宽度的最小尺寸的dp值(其实就是手机的宽度dp值),然后根据识别到的结果去资源文件中寻找对应限定符的文件夹下的资源文件。
这种机制和宽高限定符适配原理上是一样的,都是系统通过特定的规则来选择对应的文件。举个栗子,小米5的dpi是480,横向像素是1080px,根据px=dp(dpi/160),可求出横向宽度的dp值为360dp,系统就会去寻找是否存在value-sw360dp的文件夹以及对应的资源文件。
SmallestWidth限定符适配和宽高限定符适配最大的区别在于,前者有很好的容错机制,如果没有value-sw360dp文件夹,系统会向下寻找,比如离360dp最近的只有value-sw350dp,那么Android就会选择value-sw350dp文件夹下面的资源文件。这个特性就完美的解决了上文提到的宽高限定符的容错问题。
<meta charset="utf-8">
2、今日头条适配方案
它是通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题。
比如,设计稿宽度是720px,那么开发这边就会把目标dp值设为720dp,在不同的设备中,动态修改density值,从而保证(手机像素宽度)px/density这个值始终是720dp,这样的话,就能保证UI在不同的设备上表现一致了。
优点:这个方案侵入性很低,而且也没有涉及私有A,修改一次项目所有地方都会适配,无性能损耗。
缺点:
1.只需要修改一次 density,项目中的所有地方都会自动适配,这个看似解放了双手,减少了很多操作,但是实际上反应了一个缺点,那就是只能一刀切的将整个项目进行适配,但适配范围是不可控的。
2.这个方案依赖于设计图尺寸,但是项目中的系统控件、三方库控件、它们的设计图尺寸并不会和我们项目自身的保持一致。
3、AndroidAutoSize
AndroidAutoSize 是一个轻量级的屏幕适配解决方案,基于今日头条的屏幕适配方案封装而成,提供了自动化和自定义扩展的屏幕适配功能。它简化了在不同分辨率设备上保持布局一致性的复杂过程,同时允许开发者灵活地调整适配策略。