自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 模块化工程构建

该工程使用的gradle版本为7.4.0,使用的gradle插件是7.3.0,kotlin插件版本为1.7.10,每个模块都有简单的说明,有需要的可以看一下。之后在各个模块中的依赖我们只需要引用dependencies.gradle中的变量就可以,具体的版本号将在dependencies.gradle得到统一的管理。这会改变引用包的可见性,让引用common模块的其他模块也能使用common中引用的第三方。想象一下这个场景,如果我们的下单模块需要去验证是否登陆,而登陆的业务是在登陆模块中的。

2022-11-02 11:58:29 620 1

原创 Retrofit源码分析笔记(一)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v5QvubsS-1665971394325)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf8da32d42d4499f8bf94ce879fa0da9~tplv-k3u1fbpfcp-watermark.image?

2022-10-18 09:45:30 164

原创 Retrofit源码分析笔记(二)Kotlin协程的实现

我们先来看SuspendForResponse,在调用retrofit的invoke方法后,最后会调用的SuspendForResponse的adapt方法,上面我们已经说了CallAdapter会选择DefaultCallAdapterFactory,调用。那么Retrofit是怎么适配协程的呢。在上一篇文章中,我们了解到retrofit的入参解析,在入参解析的时候就kotlin就已经确定是否需要使用协程,下面的代码中,p == lastParameter如果为true则方法使用了协程。

2022-10-18 09:44:25 274

原创 kotlin协程详解(一)

上面的代码使用的协程调度器为 Dispatchers.Main从上面的日志中可以看到Log.e(TAG, “coroutine1”)闭包代码块之外的代码是在之前被低昂用的,因为 Dispatchers.Main最后是通handler让协程运行在主线程上。因为在request1中我们调用了delay方法,delay方法是在一个默认的线程池中调用,代码执行到delay协程将会被挂起,之后延时结束后将会被恢复,以回调的方式执行接下来的代码。Disaptchers.IO 显示的指定协程运行的线程为IO线程。

2022-10-17 09:44:44 595

原创 如何通过组合的方式自定义View

上面的代码中,第一句是通过obtainStyledAttributes解析上面XML文件中属性名为InputItemLayout的属性内容,并返回TypedArray,后续该命名空间中的所有属性都可以通过TypedArray.getXX()来获得XX是属性类型。如上代码,我们先获取在InputItemLayout属性中titleTextAppearance的属性,这时候发现titleTextAppearance是一个引用类型的属性,在使用。最终我们获取了所有的属性,这时候就可以开始自定义你的View了。

2022-10-17 09:36:58 524

原创 Android常用多线程解析(二)线程安全

1.线程的优先级是具有继承性的,在某个线程中创建的线程会继承线程的优先级。例如我们在UI线程中创建了线程,则线程优先级和UI线程优先级一样,平等的和UI线程抢占CPU时间资源。Volatile修饰的成员变量在每次线程访问时,都强迫从共享内存重新读取该成员的值,而且,当成员变量值发生变化时,强迫将变化的值重新写入共享内存。2.JDKAPI 中限制了新设置的线程优先级必须为[1~10], 优先级priority越高,获取CPU时间片段的概率越高。join关键字的作用是等待目标线程执行完后再执行此线程。

2022-10-17 09:35:52 627

原创 Android常用多线程解析(一)线程的使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Qwcwr1O-1665970419072)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2eaa659a5bb24a4b85385e84b58b362d~tplv-k3u1fbpfcp-watermark.image?)]上图是Android中多线程实现的主要方式,和线程的控制流程。

2022-10-17 09:34:23 1003

原创 Android常用多线程解析(三)线程池分析

进入到下面的封装任务代码Work类是实现自Runnable内部实现了一个简单的互斥锁,将任务通过构造器传递给Work类,并校验Wokr中的线程不为空,使用ReentrantLock防止在添加任务的时候出错,最后在校验过线程池的状态后,将Work加入到workes的HashSet中。如果核心线程池满了,并且线程池还在运行,就会把这个任务放入等待队列中,在加入等待队列后,线程池会再次检查线程池的状态,和核心线程池的数量,防止在添加任务的时候线程池被关闭,或者有的核心线程死亡或者任务执行完成。

2022-10-17 09:32:35 225

原创 JetPack系列(一)Lifecycle

Lifecycle是可用于构建生命周期感知型组件的类和接口 - 这些组件可以根据 Activity 或 Fragment 的当前生命周期状态自动调整其行为。我们有三种方法去使用Lifecycle观察宿主的生命周期(宿主:实现LifecycleOwner的类)

2022-10-17 09:31:23 383

原创 设计模式(一)单例模式

单例模式的写法javakotlin。

2022-10-17 09:29:36 107

原创 JetPack系列(二)LiveData

LiveData是一个可观察的数据持有者类,与常规的Observable不同,LiveData可感知Activity、Fragment、Service的生命周期,确保LiveData仅更新处于活动生命周期状态的组件观察者。如果应用程序组件观察者处于started或者resumed,则LiveData认为该组件处于活跃状态,该组件会收到LiveData的数据更新,而其他注册的组件观察者将不会收到任何数据更新。

2022-10-17 09:28:52 432

原创 JetPack系列(三)ViewModel

上面介绍过ViewModel的保存者是mViewModelStore,而mViewModelStore的提供者是ViewModelStoreOwner,而在Fragment中我们使用的是Fragment中保存的Activity,所以ViewModelStoreOwner是同一个对象,所以ViewModel是同一个对象。从上面的代码中可以看到,如果我们的Activity中持有Fragment,且Fragment中获取ViewModel的方式为。Activity中的方法又在ActivityThread中被。

2022-10-17 09:27:27 407

原创 JetPack系列(四)Room

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XuqxckBS-1665969811493)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/149096c5ab9b4814b32341e39cf27e2d~tplv-k3u1fbpfcp-watermark.image?转化器的方法名不重要,重要的是入参和出参,在上面的Entity中testList是不能被数据库存储的,当存储到数据控中会经过转换器。

2022-10-17 09:25:26 972

原创 Android消息机制Handler原理分析

1.Message的回调方法:message.callback.run(),优先级最高2.Handler的回调方法 Handler.mCallBack.handleMessage(msg)3.Handler的默认方法:Handler.handleMessage(msg)上图是Android消息机制的图解图中分为四个部分,Handler, Looper, MessageQueue, MessageHander主要是将消息发送到MessageQueue中,和处理接收到消息后执行的代码。

2022-10-15 21:52:01 1341 1

diff_match_patch

Android RN 增量更新diff_match_patch源码。复制到你的工程里就可以用了

2017-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除