8 Trilen

尚未进行身份认证

我要认证

厚积薄发 调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。 https://github.com/chenCoding

等级
TA的排名 5w+

Java 锁整理

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

2019-10-31 18:44:49

Fragment使用细节总结

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

2020-06-23 14:53:06

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

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

2017-05-17 16:49:17

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

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

2019-09-03 23:01:23

插件Manifest注册组件支持

现有的技术方案主要分几种: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

插件化框架原理设计

架构图实现原理简介如上架构图所示,为了实现组件Activity、Service、ContentProvider的生命周期由系统AMS管理,而采取了Hook 方案,而不需要框架来实现入侵式的替换组件的父类来通过反射的方式同步生命周期。对于插件Apk加载生成PluginApk对象由PluginManager进行统一管理插件的生命周期:校验、脱壳解密、安装、加载解析、启动、检查更新等。对于Ap...

2018-11-09 16:15:09

插件Apk 资源加载机制

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

2018-10-12 15:19:48

插件化so库加载原理及实现

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

2018-09-27 17:40:26

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

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

2018-07-25 19:29:08

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

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

2018-06-07 10:59:24

Android性能优化方面概述

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

2018-03-07 12:34:11

Glide缓存机制

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

2018-01-11 13:25:51

Android Studio填坑之路

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

2017-12-28 17:26:46

《深入探索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

手机dump内存Odex格式反编译

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

2017-11-27 20:37:05

IDA动态调试技术及Dump内存

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

2017-11-20 21:22:08

Android studio下Cmake配置编译开发jni总结

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

2017-10-18 13:47:52

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

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

2017-09-07 21:57:25

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

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

2017-08-01 17:28:34

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

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

2017-07-19 17:26:55

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。