- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 android 10 后台无法 startActivity 原理分析
前言Android 10 (API 级别 29) 及更高版本对后台应用可启动 Activity 的时间施加限制。这些限制有助于最大限度地减少对用户造成的中断(可以更省电),并且可以让用户更好地控制其屏幕上显示的内容。准备事项控制后台启动的关键函数为 ActivityStarter::shouldAbortBackgroundActivityStart原理分析根据以往咱们对 AMS 的认识,Activity的权限校验、安全校验等,都是放在 AMS 这一块来统一处理的。所以后台启动限制也不例外
2021-09-25 22:39:38 3671 1
原创 换肤、字体库使用出现的问题.md
换肤原理(android-skin-support)插件换肤需要设置layoutInflater的Factory2。调用LayoutInflater::setFactory2(每个LayoutInflater都需要设置一次)。因此在Activity onCreate的时候统一设置 setFactory2。换肤冲突(calligraphy)calligraphy 为 app 中已有的一套全局设置字体的框架。此框架会拦截 LayoutInflate (通过调用Activity的 attachBaseCon
2020-12-20 20:04:07 287
原创 ARouter思考与总结
问题问题一:如何做好模块间进行通讯?问题二:ARouter既然可以统筹管理Activity、Fragment。那么如果当前Activity属于jar包或者aar中Activity。我们该如何对其进行管理?总结问题一:做好模块间的通信,首先要做的事就是两个模块之间充分解耦,可是如何做到充分解耦呢?目前市面上大部分做法是:组件接口化。提供一个功能模块前,首先需要提供一组 api 出去。这个 api 就是我们常用的 interface 。这组api的定义需要放在一个公共模块,或者一个单独的模块中。这
2020-12-06 18:40:14 234
原创 ARouter原理分析
简单使用 //1 初始化 if (BuildConfig.DEBUG) { ARouter.openLog(); ARouter.openDebug(); } ARouter.init(this); //2 配置需要路由的目标 @Route(path = Constant.MAIN2) public class Main2Activity extends AppCompatActivity {} /
2020-08-01 23:07:57 389
原创 android 编译阶段根据打包命令将文件写进assets目录下
前言在日常开发中,我们可能接到一些很奇怪的第三方库的设计,比如在application初始化中,会加载指定assets目录中的文件,里面记录了一些ip地址等资源。这就导致了我们打debug包和release包的时候可能需要将不同的资源文件放入到assets目录中,可是每次打包之前更换文件,太不方便,并且不太利于其他人维护,所以就出现了动态将资源写入assets中的需求。正文想要将文件copy到assets目录中需要有两个重要步骤:获取当前打包命令的状态根据源文件目录文件copy到asse
2020-05-30 22:18:04 1877
原创 Retrofit 适配器源码详解
前言Retrofit适配器,通俗的理解就是我们写的Service接口中的返回值类型适配,常用的类型有Call,Observable。Retrofit的准备工作理解适配器前,我们先来了解一下retrofit的前期准备工作。 retrofit = new Retrofit.Builder() .client(client)//okhttpclient ...
2020-04-06 17:30:42 382
原创 Retrofit 之 泛型
Retrofit 通过泛型将字符串转成bean对象为了让大家快速理解其中原理,我这里写了一个简单的demo帮助大家理解首先是需要解析的字符串 private String jsonUser = "{\n" + " \"age\": 10,\n" + " \"name\": \"张三\"\n" + ...
2020-04-03 14:43:26 963
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人