Kanghanbin's Blog

If someone is doomed to win, then why not me.


  • 首页

  • 标签

  • 归档

  • 关于

  • 搜索

Android SharePreferences源码解读

发表于 2020-04-17
本文字数: 116k | 阅读时长 ≈ 1:45
前言在安卓开发中经常被用到,它是一个轻量级的存储类,通过key——value的形式用于保存一些配置参数。下面通过源码分析SharePreferences主要类首先介绍源码的分析过程中涉及到的一些类PreferenceManager:静态方法通过传入Context获取一个SharedPreferences实例ContextImpl:Context的实现类,真正获取SharedPreferences的类SharedPreferences:是个接口,里面又有两个接口OnSharedPreferenceChangeListener和EditorSharedPreferencesImpl:SharedP ...
阅读全文 »

MultiDex的加载dex源码分析

发表于 2020-04-11
本文字数: 89k | 阅读时长 ≈ 1:21
工作流程MultiDex的工作流程具体分为两个部分,一个部分是打包构建Apk的时候,将Dex文件拆分成若干个小的Dex文件,这个Android Studio已经帮我们做了(设置 “multiDexEnabled true”),另一部分就是在启动Apk的时候,同时加载多个Dex文件(具体是加载Dex文件优化后的Odex文件,不过文件名还是.dex),这一部分工作从Android 5.0开始系统已经帮我们做了,但是在Android 5.0以前还是需要通过MultiDex Support库来支持(MultiDex.install(Context))。所以这篇文章主要分析第二部分加载多个Dex文件源码 ...
阅读全文 »

Java和Android中的类加载机制——ClassLoader

发表于 2020-04-05
本文字数: 38k | 阅读时长 ≈ 34 分钟
Java中的ClassLoader通过ClassLoader来查找和加载Class文件到java虚拟机中,系统ClassLoader主要包括这三种,分别是Bootstrap ClassLoader、 Extensions ClassLoader和 App ClassLoader。ExtClassLoader和AppClassLoader都继承自URLClassLoader,它们都是Launcher 的内部类,Launcher 是Java虚拟机的入口应用,ExtClassLoader和AppClassLoader都是在Launcher中进行初始化的。ClassLoader是一个抽象类,其中定义了 ...
阅读全文 »

安卓中View的事件分发机制

发表于 2020-02-08
本文字数: 44k | 阅读时长 ≈ 40 分钟
前言都到了二月份了,才是我2020年的第一篇文章,今天是正月十五元宵节。过了今天意味着春节正式结束了。然而大家都知道今年的春节是个非常难受痛苦的春节。新型冠状病毒席卷整个中国,在这里向奋斗在一线的医护人员致敬,您们辛苦了!! 同时也希望国家早日战胜病毒,武汉加油,中国加油!事件从Activity传递到跟ViewGroup1.当事件产生后,首先传递到当前的Activity,调用Activity的方法dispatchTouchEvent。这里可以很清楚的看清Activity的onTouchEvent回调的时机即getWindow().superDispatchTouchEvent(ev) 返回fa ...
阅读全文 »

IntentFilter的匹配规则

发表于 2020-01-17
本文字数: 5.7k | 阅读时长 ≈ 5 分钟
前言众所周知,Activity的启动模式有两种,分为显示启动和隐式启动。显示启动很简单,就是根据指定被启动对象的组件信息:包括包名和类名;隐式启动需要根据Intent能够匹配的目标组件来启动,如果匹配不到就无法启动Activity。IntentFilterIntentFilter中的过滤信息有action、category、data。这三个属性需要同时匹配才能算匹配成功,才能启动目标Activity。一个过滤列表中的action、category、data可以有多个,所有的action、category、data分别构成不同类别,同一类别信息共同约束当前类别匹配过程。一个Activity中可以 ...
阅读全文 »

Room of Jetpack's Architecture Components

发表于 2019-12-02
本文字数: 50k | 阅读时长 ≈ 46 分钟
Room也是一个安卓rom框架,但作为Android的亲儿子,并且原生支持LiveData和Rxjava嵌套使用。配合上其他谷歌组件应该会更香吧Room 主要包含三个组件:Database: 包含数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。这个类需要用 @Database注解,并满足下面条件:必须是继承 RoomDatabase 的抽象类注解中包含该数据库相关的实体类列表包含的抽象方法不能有参数,且返回值必须是被 @Dao 注解的类Entity: 表示了数据库中的一张表DAO: 包含了访问数据库的一系列方法基本使用User@Entity data class User( ...
阅读全文 »

Kotlin关键字Reified在安卓开发中的用法

发表于 2019-11-28
本文字数: 18k | 阅读时长 ≈ 16 分钟
前言Reified使(抽象的东西)更具体或更真实。 Kotlin中的这个关键字使Kotlin成为用于Android开发的更好的语言。 共有3个明显的优点,如下所示。1.不再需要传参数clazz这也是大多数文章中最可能描述的一个比较明显的优点,这里也提及一下。如果希望具有一个用于启动activity的扩展函数,则必须有一个作为Class传入的参数。// Function private fun <T : Activity> Activity.startActivity( context: Context, clazz: Class<T>) { startAct ...
阅读全文 »

ShadowsocksR服务端搭建教程

发表于 2019-11-21
本文字数: 5.9k | 阅读时长 ≈ 5 分钟
前提:假设你已经完成了VPS注册与购买流程,这里个人买的是Vultr主机,安装了putty来控制主机。下面命令都是在putty执行系统要求:CentOS 6+ / Debian 6+ / Ubuntu 14.04 +脚本特点:所有步骤都可以通过 Shell 脚本中文交互 操作。支持 限制 用户速度支持 限制 用户设备数支持 限制 用户总流量支持 定时 流量清零支持 显示 当前连接IP支持 显示 SS/SSR连接+二维码支持 一键安装 BBR支持 一键安装 锐速支持 一键安装 LotServer支持 一键封禁 垃圾邮件(SMAP)/BT/PT安装步骤:简单的来说,如果你什么都不懂,那么你直接一路 ...
阅读全文 »

搞清kotlin中的inline,noinline和crossinline

发表于 2019-11-07
本文字数: 39k | 阅读时长 ≈ 36 分钟
在 Kotlin 中使用内联函数时,有时结合这几个关键字可提高程序性能。概览inline: 声明在编译时,将函数的代码拷贝到调用的地方(内联)noinline: 声明 inline 函数的形参中,不希望内联的 lambdacrossinline: 表明 inline 函数的形参中的 lambda 不能有 returninline使用 inline 声明的函数,在编译时将会拷贝到调用的地方。inline function定义一个sum函数计算两个数的和。fun main(args: Array<String>) { println(sum(1, 2)) } fun sum(a: ...
阅读全文 »

AsyncTask的原理

发表于 2019-09-17
本文字数: 44k | 阅读时长 ≈ 40 分钟
前言AsyncTask是一个常用的已经封装好的异步任务类,可以更加方便地执行后台任务以及切换主线程去更新UI。从实现上来说,它封装了Thread(线程池)和Handler。定义一个抽象的泛型类,提供了Params, Progress, Result三个泛型参数。a. Params:开始异步任务执行时传入的参数类型,对应excute()中传递的参数b. Progress:异步任务执行过程中执行进度值的类型c. Result:异步任务执行完成后,返回的结果类型,与doInBackground()的返回值类型保持一致public abstract class AsyncTask<Params, ...
阅读全文 »
123…7
康汉斌

康汉斌

间歇性混吃等死,持续性踌躇满志

61 日志
22 标签
GitHub Csdn
0%
© 2015 – 2021 康汉斌 | 站点总字数: 524k | 站点阅读时长 ≈ 7:57