自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在路上-codingAndlearning

积累与分享

  • 博客(52)
  • 资源 (4)
  • 收藏
  • 关注

原创 基于线上问题来源码分析onActivityResult调用时机

只有当Activity 回到前台,在resume之前会先执行onActivityForResult,所以页面要收到回调,一定是页面回到前台,直到onResume。先看onActivityForResult 在哪里执行,如下所示,在Activity的 dispatchActivityResult方法内。dispatchActivityResult 在ActivityThread内的deliverRessults。从线上问题来分析startActivtiiyForResult没有收到回调的原因,导致业务异常!

2023-05-25 16:42:52 269

原创 【抛弃制作.9图片】Android基于png图片代码动态实现.9拉伸效果

Android 实现.9拉伸效果的另径,不用画图也可以,动态生成chunk

2022-09-22 10:01:38 1165 1

原创 Android 应用Apk加载PathClassLoader流程及其双亲委托源码分析

Apk加载流程和时机分析

2022-04-14 19:21:01 517

原创 插件框架之插件Apk安装流程简介

对插件安装的流程和作用进行系统了解其中细节

2022-03-01 10:48:18 2831

原创 Android渲染原理必知必会-ViewRootImpl类核心解析

了解ViewRootImpl是学习Android UI机制的核心:事件分发机制,view绘制原理

2022-02-22 22:47:23 1806

原创 Android Hook框架总结

Android hook 机制

2021-12-21 15:27:15 3503

原创 插件框架Hook基础之动态代理

插件框架基础能力-动态代理

2021-07-30 15:06:21 208

原创 Android P以上简单绕过非公开API限制

让系统认为是系统在调用限制api怎么判断是系统在调用

2021-07-12 20:56:53 458 2

原创 Android Jni开发细节总结

上篇文章介绍了Android studio下Cmake配置编译开发jni总结,这篇介绍JNi开发的细节。Android Jni开发中比java开发不论是在编译阶段还是运行阶段都有更多的细节点需要注意,稍有不慎就会不断地进入填坑模式,扫码加入日志,不断慢慢调试,下面是个人最近开发中所遇到细节整理如下:1、认识JNI中的JavaVM和JNIEnv对象在标准的java平台下,每一个Proce...

2021-01-20 13:48:52 509

原创 Java 锁整理

整理下java相关锁的概念,加强理解公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。 对于Synchroni...

2020-06-23 14:54:30 157

原创 Fragment实用细节技巧

fragment.setRetainInstance(true)from layout 和 add fragment区别

2020-06-23 14:53:06 690

原创 Android Studio下Ndk开发踩过的坑以及解办法决

Android studio在2.2之后是开始兼容ndk的开发,尝鲜用来本地开发,各种坑,不兼容。之前用得好好的,一个升级AS或者NDK版本都会一不小心导致了编译失败,或者成功之后,加载不成功。故随手笔记记录下自己踩过的坑,也方便其他人查询。 Trap One : Caused by: java.lang.UnsatisfiedLinkError: dlopen f...

2019-11-09 14:10:28 8295

原创 源码深度解析Activity生命周期中如何正确获取UI尺寸

一般需求中会出现在Activity启动中需要获取Ui控件相关大小或者在界面绘制完成之后刷新数据,我们都知道在UI绘制完成之后,时机最好,不会阻塞主线程导致卡顿或者UI控件参数获取失败。 也许大家使用过或 知道Handler(MainLooper).Post(Runnable)和View.Post(Runnable)都是把Runnable封装成Message再 push到主线成中looper中Mes...

2019-11-09 14:09:30 1119 3

原创 源码分析MessageQueue中IdleHandler和SyncBarrier及UI渲染优化应用

深入理解Handler机制idleHandler及SyncBarrier,来充分利用系统资源

2019-11-09 14:09:16 212

原创 插件化框架对Android P non-sdk的适配

##Android P non-sdk对于非sdk接口的hide field和方法,Android P进行限制调用,可以参考如下文章https://juejin.im/post/5b8959f96fb9a019fe685eb3为了适配P,整体原则就是能绕过non-sdk方法就想办法找到兼容替代方法,实在不行就把TargetSdk 降低到28以下是对目前使用的到Hook方面以及插件化中在P中的...

2019-11-09 14:09:05 1272

原创 插件Apk启动Dex类加载机制

ClassLoader简介Android 系统中有多个classLoader的实现,如PathClassLoader、DexClassLoader、BootClassLoader;对于自定义动态加载dex文件,我们可以通过DexClassLoader来实现jar、dex、apk等文件格式加载,其父类都是BaseClassLoader,实现了对文件加载、verify、optimize等动作,最后生...

2019-11-09 14:08:30 149

原创 Android UI开发细节Api使用技巧总结

收集平时UI开发中使用到或者学习笔记做个收录,好记性不如烂笔头:持续更新中。。。。1、图片渐变技巧 第一种:叠层退去,逐渐显示底层 第二种:直接组合使用,各取一部分组成一个,利用canvas.clipRect来截取 第三种:叠层慢慢增加并且和底层取个交集:取两层绘制交集,显示上层。 PorterDuffXfermode mode = new Port............

2019-11-09 14:07:57 2839 1

原创 插件支持Activity组件及生命周期管理

现有的技术方案主要分几种:1)基类代理Activity同步反射方式子类2)Hook Instrumentation来同步创建插件Activity实例,记录在ActivityRecord队列中3)HooK ,同步AMS对生命周期的回调,这回调有两种方案(1)动态代理方案,Hook替换binder类型的接口(2)Hook handler机制CallBack接口,在handle回调时候 在c...

2018-11-09 16:30:59 533

原创 插件化原理及实现方案总结

学习插件框,帮助提供Android 系统framework,加深理解运行原理

2018-11-09 16:15:09 2519

原创 插件Apk启动资源加载

系统安装过的Apk资源加载原理可以参考下之前写的文章:Android App启动时Apk资源加载机制源码分析一句总结要表达的是Apk资源都是由AssetManager来加载维护的,核心代码 // AssetManager创建 AssetManager assets = new AssetManager(); // resDir can be null if...

2018-10-12 15:19:48 502 2

原创 插件启动so库加载原理及实现

前言在正常开发中,我们只负责调用方法加载so,整个实现交给系统去完成,那插件中要加载so库要做什么单独的处理么,在不清楚的情况下,先看下系统是怎么实现的,我们直接利用系统来完成加载要怎么做。系统加载so库流程源码分析先看下开发中加载so库的方式如下,基于Android-25:static { System.loadLibrary("ymm_log");}在看下System类的...

2018-09-27 17:40:26 2145

原创 Android mmap技术实现高性能日志库

1、C/C++实现高性能,Buffer缓存来减少IO次数,Native开发内存占用低,写入内存速度快,不卡顿 2、内存映射mmap实现crash,或进程退出时的未保存的log,避免丢失 数据 3、保存本地,需要的时候日志上传辅助定位 4、密文保存日志,防止数据泄露

2018-07-25 19:29:08 2972 1

原创 Android嵌套滑动-Behavior方案实战及细节注意

笔者在2013年就收到Android嵌套滑动的UI效果需求,当时都是直接从监听滑动事件分发做起,至今再次收到这种类似的需求,一直以来想更新下之前的实现方式,相对于Behavior封装过的方案而言毕竟不够优雅,现就介绍前后两种方案。老方案的思路 这种方式是底层,其他的封装(包括behavoir)都是基于此,直接重写父类(ViewGroup)的事件分发机制:dispatchTouchEvent...

2018-06-07 10:59:24 5382 1

原创 Android性能优化方面概述

个人总结性能优化中需要考虑的方面以及简单总结,毕竟相关内容很多,就不详细展开具体内容,但持续更新中,方便自己或大家查阅1、UI卡顿优化 1)布局优化:减少层级(merge),代码重用(include),延迟初始化(viewstub) 2)绘制优化:频繁刷新,过度绘制,超过16ms 3)内存优化:频繁创建对象导致:内存抖动、内存溢出或泄露导致频繁GC 4)...

2018-03-07 12:34:11 444

原创 Glide缓存机制

Glide缓存机制Glide缓存非常先进,很灵活,很全面,总体上来讲有内存缓存和磁盘文件缓存。缓冲机制概括来讲就是读缓存以及是写入缓存的机制。而Glide读缓存时机就是先内存缓存查找再到磁盘缓存查找最后网络,写入缓存则就是在获取到原始source图片之后,先写入磁盘缓存,再加入内存缓存。每个缓存查找都是通过key来查询,一般都是直接用下载url来作为key,那Glide的key呢。直接看下

2018-01-11 13:25:51 9062

原创 Android Studio填坑之路

Android Studio是个强大Android开发工具,每个新版本的发布都有带来新的惊喜和爽快,但是同时也带来惊吓和糟糕,这边文章就是收集开发中遇到的细节问题以及解决方法。

2017-12-28 17:26:46 514

原创 《深入探索Android热修复原理》代码热修复总结

阿里巴巴对热修复技术的发展路线: 1、基于Xposed而来的Dalvik下java method hook技术-Dexposed框架,仅限于Dalvik虚拟机 2、兼容到Art虚拟机的Andfix,同样是基于底层的结构替换方案 3、进而发展就是hotfix,基于Andfix,有所提高,但都没有对资源和so实现修复能力 4、接下来就是这篇主角:17年6月提出的新方案-非入侵时Soph...

2017-12-25 11:11:20 802 1

原创 手机dump内存Odex格式反编译

在上篇文中介绍了如何dump内存,生成的文件为odex格式,需要进一步反编译才能查阅。先是通过baksmali工具转成smali格式文件,然后再通过smali工具把smali格式逆向dex。

2017-11-27 20:37:05 1459

原创 IDA动态调试技术及Dump内存

最近研究SO文件调试和dump内存时,为了完整IDA调试起来,前后摸索了3天才成功,里面有很多坑和细节,稍微不注意,就一直排行,需要理解每步骤的作用意义,否则就会觉得教程不对,要详细的教程可能找不到,大部分都是简单介绍,没有提醒细节和易忽视的点动态调试步骤,顺序严格如下事先准备工作 1、要求root手机或者直接用模拟器 否则没有权限启动android_server 2、IDA在6.6以上版

2017-11-20 21:22:08 8681

原创 Android studio下NDk开发Cmake配置总结

在Android Studio在2.2版本实现了Ndk开发新的编译工具Cmake,比之前ndk-build方式来得更方便快捷,可以直接运行app时就生成了so并打包到apk中,省去了之前开发ndk时出现的很多麻烦。例如没有代码提示,自动填充,开发起来都是一个个手写,出现错误只能是编译打包阶段提示,还必须先生成so再替换原文件运行。现在通过cmake开发起来得到大大提升,下面介绍这段时间ndk jn...

2017-10-18 13:47:52 10308 1

原创 Sdk界面UI开发自动适配屏幕技巧

前两篇分别是关于Sdk安全方面以及开发注意事项-Sdk迭代开发设计需要考虑的方面总结, 这篇继续讲Sdk开发相关内容-Sdk界面UI开发中图片自适配。在apk开发中我们不会太关注这个图片适配,因为系统会自动适配。这里就是要从图片加载到内存时,具体如何适配的屏幕分辨率先讲起,那还要从图片bitmap加载出来具体大小是多少讲起。

2017-09-07 21:57:25 1355

原创 《Android彻底组件化方案实践》读后分析

项目发展到一定程度,随着人员的增多,代码越来越臃肿,这时候就必须进行模块化的拆分。在我看来,模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化。

2017-08-01 17:28:34 2552

原创 Sdk迭代开发设计需要考虑的方面总结

Sdk开发设计与Apk开发不同的地方还是有些明显的不同之处,明显的区别是使用对象不一样,Sdk是基于开发者使用的,都是有一定的开发水平,相对于Apk用户而言基本是大众用户,做得好不好不仅仅是运行起来性能、稳定行以及功能,还需要顾忌开发者调用是否方便、嵌入成本、更新维护成本,因为Sdk是作为一个库给对方使用,但又不是开源的,还得注意保护知识产权,个人认为一个不错优秀的sdk开发需要注意如下方面:

2017-07-19 17:26:55 2697 4

原创 Android实现资源动态加载的两种方式

这是Android Apk源加载机制原理分析以及动态加载实现系列文章 的最后一篇。经过前两篇的介绍之后,相关基础都讲的差不多了,现在要实现自己项目中的资源加载框架,这里提供两种方式,区别在于由谁来加载资源。1、利用系统加载资源Apk 2、主动手动实现资源的加载

2017-06-25 20:41:49 6727 1

原创 Res目录下资源如图片文件和xml文件资源如何被加载显示出来

紧接上一篇 Android App启动时Apk资源加载机制源码分析 分析App启动时是如何加载初始化资源之后,接下来分析开发过程中调用显示资源View的Api接口(如设置背景图片)具体是如何把启动时加载好的图片显示出来。上篇讲的启动时候加载资源只是把资源初始化准备好,而这篇是将具体实际显示资源时候,是如何把启动时准备好的res资源加载出来供View显示。

2017-06-25 16:21:53 1863

原创 Android App启动时Apk资源加载机制源码分析

在Andorid开发中我们要设置文字或图片显示,都直接通过Api一步调用就完成了,不仅是我们工程下res资源以及系统自带的framwork资源也可以,那这些资源打包成Apk之后是如何被系统加载从而显示出来的呢。

2017-06-23 11:27:32 6050

原创 Android Apk资源加载机制源码分析以及资源动态加载实现系列文章

Android系统中运行Apk时是如何对包内的资源进行加载以及我们开发中设置相关资源后又是如何被加载出来,这个系列我们可以学习系统加载资源的机制原理,然后我们再巧妙的利用学习系统加载技巧来打造我们自己的动态资源加载机制实现。

2017-06-21 15:41:17 1046

原创 Android Animation动画原理源码分析

Android 平台提供了三类动画,一类是 Tween 动画-Animation,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果;第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似。最后一种就是3.0之后才出现的属性动画PropertyAnimator ,这个分享的是第一类动画实现原理。

2017-06-19 17:14:39 2896

原创 Android 图片着色Tint后向兼容DrawableCompat库实现原理分析并简化封装

前言:之前在Android Ui开发中实现ImageView背景图片点击变色,往往会要求UI设计师提供两种不同颜色的图片分别作为selector的不同选中状态下的背景图,可以想象就是仅仅颜色不一样,就需要一个相同大小的图片,这样不仅仅浪费资源,加大res下图片资源体积,而且还需要重新加载一个新图片而导致增加系统负担。所以如果可以利用一种颜色的图片就可以实现出来多种颜色,对这个图片进行着色,实现不同种

2017-06-16 16:16:43 1290

原创 Android5.0通过JobScheduler特殊场景下周期性执行后台任务

JobScheduler是Android5.0 开始引入了一个新系统服务。它将后台任务调度直接交给系统服务(JobSchedulerSevice)管理,并且可以设置许多约束条件,如周期调度,延迟调度,网络连接,电源插入,还有AndroidL引入的空闲模式,在条件符合的情况下,系统服务BindService的方式把应用内Manifest中配置的JobService启动起来。

2017-06-09 15:15:56 2574 2

抽离v4包中DrawableCompat中着色兼容实现封装而成一个类TintDrawable

抽离v4包中DrawableCompat中着色兼容实现封装而成一个类TintDrawable,简易使用,从而减少项目资源大小

2017-06-16

android design support

android 开发同行们,福利来了,最新android开源支持类库

2015-07-28

多米画廊效果

多米的画廊源码,反编译过来的,但能看到画廊部分

2013-10-16

SMSPOPU-android

sms开发,相关代码,部分源代码,请供参考一起研究讨论

2013-03-24

空空如也

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

TA关注的人

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