![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构篇1下
文章平均质量分 80
洌冰
没有
展开
-
红橙Darren视频笔记 热更新 bsdiff bspatch 在Android设备上的应用 架构篇1完结篇
概述当时红橙的视频讲解就差不多90分钟,但是真正自己做出来热更新的demo还是花了八九个晚上,期间遇到各种各样的问题,什么叫台上一分钟 台下十年功是深有体会了。本节会涉及一部分NDK的知识 推荐阅读Android官方的NDK简介https://developer.android.com/ndk/guides上一节我们学习了如何在Linux下使用bspath和bsdiff 这次我们学习一下如何在Android设备上使用该第三方库我们的热更新的一般流程是这样的当然我们这里只是写个demo 大致了解原创 2021-07-05 09:44:18 · 480 阅读 · 2 评论 -
红橙Darren视频笔记 bsdiff bspatch 使用(Linux下)
跟着红橙的视频学习热更新 需要使用到bspatch和bsdiff技术 本来打算在windows上搞的,无奈windows上各种编译错误 也没有提示。一怒之下下了个VMware 装了个虚拟机,结果从下载bsdiff到搞出效果不超过一个小时就搞完了。无怪乎那么多人喷Windows上开发那么不方便了,我在windows上可是尝试了十几个小时呢。。。。吐槽结束下面进入正题。参考链接:https://www.jianshu.com/p/33f75ace683chttps://blog.csdn.net/lmj6原创 2021-06-29 09:31:04 · 1948 阅读 · 1 评论 -
红橙Darren视频笔记 启动不在清单文件注册的activity 安卓8有效
参考链接https://www.jianshu.com/p/aa03c4458b9ahttps://www.jianshu.com/p/af148ab5ddf7前提:了解InvocationHandler的使用以及Activity的启动流程另外还需要对反射比较了解如果不是很了解可以参考如下两篇文章https://blog.csdn.net/u011109881/article/details/117263548https://blog.csdn.net/u011109881/article/原创 2021-06-15 22:03:02 · 320 阅读 · 5 评论 -
红橙Darren视频笔记 Activity启动流程(API28)
在查看Android Api28 start activity流程的源码时 发现27和28的源码差别很大,对于28的启动流程整理如下: Intent intent = new Intent(MainActivity.this,MainActivity2.class); startActivity(intent);Activity.java public void startActivity(Intent intent) { this.startAc原创 2021-06-08 21:15:07 · 424 阅读 · 0 评论 -
红橙Darren视频笔记 代理模式 动态代理和静态代理
红橙Darren视频笔记 代理模式 动态代理和静态代理(Android API 25)关于代理模式我之前有过相关的介绍:https://blog.csdn.net/u011109881/article/details/82848719里面介绍了各种代理模式使用的情况静态代理demo接口类public interface IBank { // 申请银行卡 void applyBank(); // 挂失 void loseBank();}代理类//原创 2021-05-25 20:13:27 · 242 阅读 · 1 评论 -
红橙Darren视频引申 第一次写NDK项目(Android studio 4.1.1)
1.第一次创建NDK项目使用Android studio创建NDK的步骤如下:打开Android Studio中的File->Settings->Android SDK打开SDK Tools tab页 选择NDK和CMake下载下载完毕之后 看看项目的NDK路径有没有识别 如果识别即可创建C++项目下载完毕之后点击 invalidate Caches/Restart 重启Android Studio创建完毕 后等待sync结束即可运行项目 可以从c++层获取到一个string 如原创 2021-05-20 20:16:56 · 246 阅读 · 0 评论 -
红橙Darren视频笔记 App保活-双进程守护与JobService
App为什么会被杀死一般情况App被杀有以下几种情况1 手机内存不足,系统需要花费更多资源去运行优先级较高的应用2 第三方的管理软件比如360,腾讯管家,清理进程也可能会杀死进程Android系统会优先杀死进程优先级较低的应用,如果应用的优先级相同,那么系统会优先杀死占用内存较多的应用。所以要使得我们的应用长时间保活,正常的做法是提高优先级以及优化内存使用,不要出现内存泄漏等现象。Android进程优先级:以下内容拷贝自Android 官网https://developer.android.原创 2021-05-12 20:44:39 · 445 阅读 · 0 评论 -
红橙Darren视频笔记 从AIDL Demo分析Android源码走向
一 AIDL demo1.1 服务端搭建新建AIDL文件// IUserCalc.aidlpackage com.example.aidlserver;// Declare any non-default types here with import statementsinterface IUserCalc { String getUserName(); String getUserPassword();}创建Service/** * Created by hjc原创 2021-04-27 21:55:15 · 306 阅读 · 0 评论 -
红橙Darren视频笔记 换肤框架4 换肤的功能完善 内存泄漏分析
上一篇完成了换肤框架的基本搭建,这一次 我们继续补完上一次遗留的一些可以完善的部分1.完善换肤1.1退出后再进入应用 不会丢失上一次保存的皮肤基本原理:将上一次切换的皮肤path保存在SharedPreference中,下一次进入应用读取该数值同时在BaseSkinActivity创建view时应该加载一下皮肤 public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Cont原创 2021-04-23 21:34:17 · 238 阅读 · 0 评论 -
红橙Darren视频笔记 换肤框架3 实践篇 换肤框架搭建
基于之前的两篇文章 获取其他apk中的资源 以及 view创建的拦截我们可以搭建自己的换肤框架了1.架构分析SkinType:表示换肤的资源类型 ,skin()实现了具体换肤的方法SkinAttr:存储了某个view的一个可以换肤的属性,存储的值为 当前资源名+属性类型SkinView:存储切换皮肤的一个view 该view可能存在多个属性需要换肤applySkin用于遍历当前view的可换肤属性 然后对view进行换肤SkinManager:核心类 换肤公开接口调用的地方 内部保存mSkinR原创 2021-04-20 20:39:50 · 813 阅读 · 0 评论 -
红橙Darren视频笔记 换肤框架2 原理篇 view创建的拦截
1.实现换肤的要求与方案分析要求1.换肤后每一次打开应用都是新的皮肤2.换肤后所有的activity里面的View都要换肤(即时刷新)做法:为所有Activity添加theme的监听 当theme发生变化的时候 通知所有Activity进行换肤 如果使用fragment,activity内部遍历自己的fragment 也进行换肤换肤分为两步1.找到皮肤包的位置2.给所有的view换肤1.1皮肤包的位置方案皮肤包根据实现的方式 存储的地方有所不同像之前的文章(https://blog.c原创 2021-04-14 19:31:00 · 233 阅读 · 0 评论 -
红橙Darren视频笔记 换肤框架1 获取其他apk中的资源
1.Android xml属性资源的加载以ImageView的src为例 看看Android是如何找到图片资源的我们通常使用image的代码如下 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/btn_back"/>Android是如何加载到这个资源的呢点进src的源原创 2021-04-09 20:33:07 · 340 阅读 · 1 评论