JetPack
文章平均质量分 80
关于JetPack的库
Mr_Tony
这个作者很懒,什么都没留下…
展开
-
Compose中的重组、state、remember
在Compose中UI采用State状态来控制UI变化,根据状态的不同来显示不同的内容,每次UI的重新变化成为重组。通过remember可以将state的数据保存起来(或者实例对象,毕竟条件不改变的话默认只会执行一次remember中的函数,哪怕重组无数次),避免在重组期间进行重置。下面记录下三者的关联。原创 2024-02-01 15:30:55 · 715 阅读 · 0 评论 -
Android源码中示例代码的查看方式
由此可知其余示例也是找到相关的官方仓库,然后去查看示例代码。在实际开发中查看官方api定义的时候会看到如下内容。原创 2024-02-01 12:18:50 · 232 阅读 · 0 评论 -
Android Room数据库异常(线上两个版本之间结构无变动): Room cannot verify the data integrity.
在Room数据库结构变动的情况下,如果没有进行Room数据库升级迁移,则会报错。在实际开发过程中,数据库结构会经常变化,直到发版。一般来说卸载即可重新安装,但是有时候即使卸载了再安装依然会出现这个错误。这时候通常重启设备再重新安装即可,然而再后面即使数据库没有更改多次安装还是有概率出现,一旦出现,只能重启。查阅多种资料,最终发现通过禁用备份功能可以解决该问题。猜测是备份功能会自动把之前旧的数据库版本更新下来然后与当前新版本数据库产生了冲突。原创 2024-01-30 16:27:25 · 808 阅读 · 0 评论 -
在Compose中控制组件中数据的流速
在Compose中设计思想是分为状态和组件的,组件由状态控制。这个操作和传统的AndroidView不太一样。在Compose中对话框Dialog也是一个组件,其显示和隐藏由外部状态控制。这里有一个场景,假设显示和关闭的时间间隔过短的话,需要将时间延长至两秒后再隐藏。针对这种问题有两种写法,一种是外部控制显示隐藏时机,一种是内部控制。外部控制较为简单,这里不再记录。本文记录下内部控制方式。原创 2024-01-29 20:04:42 · 395 阅读 · 0 评论 -
Compose中添加Android原生控件
Compose中使用Android原生控件的注意事项原创 2024-01-26 15:42:54 · 863 阅读 · 0 评论 -
Compose中使用paging3进行列表分页加载Room中的数据
本文简要记录下流程,代码需要修改后才可以运行。原创 2024-01-12 20:07:52 · 852 阅读 · 0 评论 -
Coil的原理浅析与自定义加载类型
Coil是一种纯粹是一kotlin编写的,利用了协程特性的图片加载库,其代码量较少,算是比较轻量的图片加载库。对于常规类型的图片都有加载方式,不过也有无法预料的情况,比如加载apk文件中的图片,此文章基于此问题进行编写。Coil自身支持的类型有StringHttpUrlUriFileIntDrawableBitmap但是如果想新增类型的话需要拓展MapperFetcher。其中Mapper是对用于区分不同的类型,比如将String类型转换为File或者Uri。原创 2023-03-31 11:11:20 · 540 阅读 · 0 评论 -
PendingIntent.getActivity创建两个Activity实例的问题
PendingIntent.getActivity使用时候遇到的问题原创 2022-08-16 16:18:35 · 1353 阅读 · 0 评论 -
MotionLayout的使用
MotionLayout的简单用法原创 2022-08-03 11:13:45 · 763 阅读 · 0 评论 -
ContrstrainLayout的动画之ConstraintSet
ConstraintLayout的简单动画效果原创 2022-08-02 16:07:13 · 674 阅读 · 0 评论 -
Kotlin的协程与生命周期
liveData与协程原创 2022-08-01 19:56:39 · 1332 阅读 · 0 评论 -
WorkManager的学习四
Android的WorkManager的按需初始化和自定义配置原创 2022-07-19 10:29:38 · 337 阅读 · 0 评论 -
WorkManager的学习三
WorkManager的进度观察和数据合并原创 2022-07-05 10:55:34 · 269 阅读 · 0 评论 -
WorkManager的学习二
WorkManager的学习二,观察任务的执行状态原创 2022-07-04 18:02:02 · 696 阅读 · 0 评论 -
WorkManager学习一
WorkManager的学习一原创 2022-07-04 15:03:52 · 1063 阅读 · 0 评论 -
JobService的使用
JobService的使用原创 2022-06-20 18:21:24 · 1092 阅读 · 0 评论 -
ConstraintLayout2.0的使用
` ConstraintLayout`除了之前的一些约束布局的特性以及、`Group`之外记录一些新版本的特性原创 2022-06-05 16:38:24 · 791 阅读 · 1 评论 -
CoordinatorLayout的使用方式
CoordinatorLayout的学习原创 2022-05-29 20:43:08 · 1637 阅读 · 0 评论 -
Dagger的使用一
文章目录一、前言二、添加依赖三、简单示例四、作用域五、自定义作用域六、@Binds 和 @Provides七、关于Dagger为什么在Android中要比Hilt复杂八、inject(Activity act)的用法十、参考链接一、前言Hilt是对Dagger的封装处理,这里对其进行下简单介绍。二、添加依赖 implementation 'com.google.dagger:dagger:2.41' kapt 'com.google.dagger:dagger-compiler:2.4原创 2022-05-01 19:26:49 · 376 阅读 · 0 评论 -
Hilt的使用(JetPack的兼容)五
文章目录一、前言二、ViewModel三、WorkManager四、参考链接一、前言目前项目中使用JetPack的越来越多,然后Hilt也对其进行了一定的支持,其中有ViewModel和WorkManager。这里进行简单记录二、ViewModel添加依赖:// implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha01'//hilt-lifecycle-viewmodel在Dagger 2.34 版本中被弃用//所原创 2022-05-01 09:57:14 · 962 阅读 · 0 评论 -
Hilt的使用(动态模块)四
Hilt 在动态功能模块的使用原创 2022-05-01 08:36:21 · 450 阅读 · 0 评论 -
Hilt的使用(组件的生命周期和作用域)三
文章目录一、前言二、为 Android 类生成的组件为 Android 类生成的组件组件生命周期组件作用域组件层次结构三、参考文档一、前言在Hilt的使用过程中,会需要涉及到生命周期和作用域,这里进行下简单记录,以作为工具参考。主要是参考官方文档,部分内容进行了修正。二、为 Android 类生成的组件为 Android 类生成的组件对于您可以从中执行字段注入的每个 Android 类,都有一个关联的 Hilt 组件,您可以在 @InstallIn 注释中引用该组件。每个 Hilt 组件负责将其绑原创 2022-04-30 20:00:20 · 723 阅读 · 0 评论 -
Hilt的使用(基本用法)二
Hilt的基本用法原创 2022-04-30 18:53:30 · 2891 阅读 · 0 评论 -
Hilt的使用(依赖注入的基础知识)一
文章目录一、前言依赖项注入基础知识什么是依赖项注入?二、未使用依赖注入三、使用构造函数或字段进行依赖注入四、自动依赖项注入五、依赖项注入的替代方法六、在 Android 应用中使用 Hilt七、总结八、参考链接一、前言Hilt是Android的依赖注入库,是依赖倒置思想的体现,主要用于项目的解耦操作。这篇文章主要是对依赖注入进行个记录,并没有使用Hilt。内容都是来自于Android Develop文档。下一篇正式开始使用时候才进行实际操作时候使用,该文的主要目的是为了使文章系列形成连贯性,其次是为了避原创 2022-04-29 16:52:15 · 1105 阅读 · 0 评论 -
DataBinding的使用六
文章目录一、前言二、属性的定义三、使用自定义特性的双向数据绑定四、转换器五、其余内容使用双向数据绑定的无限循环双向特性六、参考链接一、前言本篇记录下关于DataBinding双向绑定的问题。双向绑定的意思是Modle的数据变化会引起UI刷新,UI的刷新也会反向引起Modle的改变。二、属性的定义以下是简单的示例ObservableUserModel.ktclass ObservableUserModel : ViewModel(), Observable { private val ca原创 2022-04-24 19:59:16 · 1708 阅读 · 0 评论 -
DataBinding的使用五
DataBinding与LiveDta、ViewModel的使用原创 2022-04-21 16:53:42 · 1045 阅读 · 0 评论 -
DataBinding的使用四
文章目录一、前言二、环境配置三、拓展功能1、对现有属性提供自定义逻辑2、修改函数名3、自定义多属性适配器4、对旧值的处理5、多个监听器的问题6、对象转换四、参考链接一、前言本篇主要记录下绑定适配器的用法,下面是一个常见的例子,用于将字符串绑定到android:text属性上面<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"原创 2022-04-20 17:00:53 · 1131 阅读 · 0 评论 -
DataBinding的使用三
文章目录一、前言二、可观察字段三、可观察集合四、可观察对象五、参考链接一、前言上文记录了DataBinding的表达式的使用,这一篇继续对可观察对象的使用进行记录二、可观察字段这里引用一下官网的介绍可观察性是指一个对象将其数据变化告知其他对象的能力。通过数据绑定库,您可以让对象、字段或集合变为可观察。任何 plain-old 对象都可用于数据绑定,但修改对象不会自动使界面更新。通过数据绑定,数据对象可在其数据发生更改时通知其他对象,即监听器。可观察类有三种不同类型:对象、字段和集合。当其中一原创 2022-04-18 17:55:37 · 350 阅读 · 0 评论 -
DataBinding的使用二
文章目录一、前言二、对象引用三、绑定表达式1、基础用法2、函数引用四、参考链接一、前言上一篇文章简单的对`DataBinding`有一个初步的了解。这里会对剩下的内容进行一个记录。这里主要参考类官方文档二、对象引用`DataBinding`允许在布局里面直接使用一些对象。这些对象可以通过在Java/Kotlin代码中对其修改使其改变UI内容。比如`String`、`Integer`之类的。这些类可以进行直接定义。如下: <data> <variable原创 2022-04-18 11:58:21 · 772 阅读 · 0 评论 -
DataBinding的使用一
文章目录一、前言二、环境配置三、将现有布局转换为databinding布局四、数据绑定五、DataBinding文件六、参考链接一、前言`DataBinding`是`JetPack`中用来进行双向绑定的库,可以使数据和UI进行解耦合。这里对其进行使用进行简单的记录二、环境配置在以前的旧版上使用`DataBinding`还需要添加插件和依赖库,不过目前来说无需如此复杂,只需要在`build.gradle`中进行简单的配置即可。这里有两种配置方式,如下:方式一:android {原创 2022-04-15 17:08:56 · 3987 阅读 · 0 评论 -
Fragment的使用(七)-FragmentTransaction
文章目录一、前言二、FragmentTransaction三、常用api四、setPrimaryNavigationFragment四、参考链接一、前言在Fragment的实际操作中其实并不是使用Fragment来进行操作的,而是通过使用FragmentTransaction进行操作的。比如add、replace、remove等等。二、FragmentTransaction通常使用FragmentManager来获取FragmentTransaction。如下:val fragmentManage原创 2022-01-14 20:18:30 · 1214 阅读 · 0 评论 -
Fragment的使用(六)-FragmentManager
文章目录一、前言二、FragmentManager三、常用api四、多返回栈技术五、参考链接一、前言在对Fragment的使用时候,FragmentManager是经常要用到的东西,当然使用Navigation的时候可能会不用这个。在这里面会有很多比较细节的地方,这里将其做个简单的整理记录二、FragmentManager在FragmentActivity子类(如AppCompatActivity)都可以通过getSupportFragmentManager()方法访问FragmentManager原创 2022-01-14 19:32:25 · 2375 阅读 · 0 评论 -
Fragment的使用(五)-使用FragmentOnAttachListener接口进行Fragment的通信
文章目录一、前言二、代码演示三、参考链接一、前言在开发中会涉及到Fragment之间通信的问题。之前的几篇记录了几种方式。这里再记录一种使用接口进行通信的方式。本篇记录Activity与Fragment通信的方式。Fragment与Fragment之间的通信也可以使用这种方式。以前是使用onAttachFragment()进行获取Fragment的添加监听。但是新版的Fragment使用FragmentOnAttachListener进行了替换。所以这里使用新版的api。二、代码演示Fragment原创 2022-01-13 19:03:50 · 1074 阅读 · 0 评论 -
Fragment的使用(四)- Fragment之间传递数据
使用FragmentResultListener进行Fragment之间通信原创 2022-01-13 17:04:47 · 2918 阅读 · 2 评论 -
Fragment的使用(三)-arguments
文章目录一、前言二、代码演示1、修改MainActivity.kt2、修改BlankFragment3、FragmentFactory中使用一、前言Fragment传递参数除了使用FragmentFactory之外,还有一种传统的arguments的方式。二、代码演示1、修改MainActivity.ktclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?)原创 2022-01-13 15:43:46 · 553 阅读 · 0 评论 -
Fragment的使用(二)-FragmentFactory
FragmentFactory与FragmentContainerView原创 2022-01-13 15:20:17 · 505 阅读 · 0 评论 -
Fragment的使用(一)
Fragment的简单使用原创 2022-01-13 14:59:43 · 986 阅读 · 0 评论 -
Jetpack之LiveData
文章目录一、前言二、特点三、添加依赖四、初步使用示例五、Transformations六、MediatorLiveData七、liveData{}八、参考链接一、前言LiveData是Android中用来进行数据监听的类。由于一些限制,现在官方推荐使用Flow进行数据监听。在ktx拓展包中,使用LiveData.asFlow()可以很方便的将LiveData转换为Flow。Flow.asLiveData()也可以很方便的将Flow转换为LiveData二、特点LiveData通常在ViewModel原创 2021-12-24 18:05:15 · 1063 阅读 · 0 评论 -
Jetpack之LifeCycle
文章目录一、前言二、添加依赖三、核心类结构理解四、简单示例五、自定义 LifecycleOwner六、LifecycleEventObserver七、Lifecycle的部分方法八、参考链接一、前言Jetpack中有一个LifeCycle,主要用于对Activity和Fragment的生命周期做一个解耦分离。虽然用法简单,但却是JetPack不可缺少的一环。这里不在对为什么使用LifeCycle和使用LifeCycle的优点进行解释(这里官方文档有详细解释),仅记录LifeCycle的使用方式。二、添原创 2021-12-24 15:47:52 · 1159 阅读 · 0 评论 -
ViewModel的使用-ViewModel与RecycleView(七)
文章目录一、前言二、结论三、ListAdapter源码四、参考链接一、前言本篇只是对RecycleView中使用ViewModel进行一个记录。确定使用哪种方案,在面临这两种情况可以考虑两种方案:1、在RecyclView中使用List<ViewModel>进行填充2、在RecycleView中使用ViewModel<List>进行填充(上面对两种例子的代码实际上不能编译通过,只是起到一种辅助说明的意思。表示RecycleView中是使用一个包含很多ViewMode的列表,原创 2021-12-24 14:20:31 · 3019 阅读 · 0 评论