
android进阶
就不呵呵呵
Don't be a coder but a thinker
展开
-
ThreadLocal 源码简介
简单介绍线程内部存储数据存储类 ThreadLocalThreadLocal的诞生或者说ThreadLocal要解决的问题有些时候一个线程中的任务过于复杂,这可能表现为函数调用栈比较深以及代码入口 的多样性, 在这种情况下我们又需要监听器能够贯穿整个线程的执行过程,这个时候 可以怎么做呢?其实这时就可以采用ThreadLocal,采用ThreadLocal可以让监听器 作为线程内...原创 2018-03-29 21:48:43 · 320 阅读 · 0 评论 -
OSGI 角度理解Atlas 类加载机制
前言:要想明白Atlas的类加载机制,就要了解OSGI 框架,因为查看Atlas源码会发现Atlas的核心思想就是OSGI。 OSGIosgi 的主要特点是有灵活的类加载器框架,osgi的bundle类加载器之间只有规则没有固定的委派关系。接下来让我们来看看Atlas的具体类加载规则。 OSGi为每个bundle提供一个类加载器,该加载器能够看到bundle Ja...原创 2018-05-15 19:56:31 · 937 阅读 · 0 评论 -
Atlas通信方式之——RemoteTransactor
简述: Atlas提供了3中通讯方式分别是:RemoteTransactor、RemoteView、RemoteFragment. RemoteTransactor是RemoteView、RemoteFragment 通讯方式的简化版仅仅为了Bundle和Bundle之间的通讯而存在,这篇文章将提供简单的使用实例,和源码简析和指出其中存在的坑。 场景还原 ...原创 2018-05-07 21:28:47 · 1759 阅读 · 0 评论 -
Android 8.0 WebView 版本引起的血案
问题描述: 在Android 8.0的原生手机上,凡是在xml文件里面含有 标签的,在加载该页面的时候都会报如下错误 Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class android.webkit.WebView...原创 2018-04-27 20:37:21 · 9823 阅读 · 2 评论 -
JNI 持续总结
java 调用Native代码编写一个java类,并且在某些方法签名的修饰中加上native 修饰符。使用javac 命令编译第一步中的java类,使之成为一个class文件。使用javah命令将第二步的class文件作为输入,生成JNI的头文件。将JNI 头文件复制到项目下的jni目录,并且建立一个cpp的实现文件实现该JNI头文件中的函数。编写Android.mk文件,加...原创 2018-04-22 18:24:44 · 235 阅读 · 0 评论 -
Android 之Application和Resource 实例化过程
Application 实例化过程//我们的ActivityThread就是通过这个Handler来通知启动Application的//并且Activity也是它通知启动的具体可以看ActivityThread中各种handle开头的方法final H mH = new H(); //看来还是通过Handler public void handleMessage(Mess...原创 2018-04-18 15:26:30 · 1291 阅读 · 0 评论 -
外观模式浅析
外观模式是我们封装API的常用手段,比如在我们开发各种SDk的时候。 外观模式定义: 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,外观模式提供一个高层次的接口,使得子系统更加易于使用UML图: 实例代码实现 系统A定义public interface ISystemA { /** * 系统A的一些内部操作 */...原创 2018-04-05 14:41:53 · 253 阅读 · 0 评论 -
责任链模式浅析
责任链模式简介:责任链模式是行为设计模式之一,使对个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到对象处理它为止。责任链模式使用场景:1. 多个对象可以处理同一请求,但是具体由那个对象处理则在运动时动态决定。2. 在请求处理者不明确的情况下向多个对象中的一个提交请求。3. 需要动态指定一组对象处理请求的UML图 ...原创 2018-04-05 11:37:44 · 492 阅读 · 0 评论 -
Android 源码解析之Singleton
今天在查看Activity源码的时候看到一个 android.util 包中存在一个有意思的工具类,想想和有意思或者说对我们以后写对象的懒加载很有用,在此记录一下顺便分享给有用的童鞋。 先上源码package android.util;/** * Singleton helper class for lazily initialization. * * Modeled afte...原创 2018-03-29 15:09:38 · 577 阅读 · 0 评论 -
Messenger源码解析
简述:Messenger是一种轻量级的IPC方案,它的底层实现是AIDl,也就是说它是系统对AIDL的一个简单封装方便Android开发人员进行进程间通信,它一次只能处理一个请求,因此在服务端不用考虑线程同步问题,因为在服务端不存在并发执行的情况。接下来进入正题开始源码解析 构造函数 Messenger 存在两个构造函数 分别是 //1. 传递处理请求的Han...原创 2018-04-16 10:21:09 · 407 阅读 · 0 评论 -
AIDL文件生成的java文件内容分析
先上流程图我们先来看看编写的aidl文件编译器为我们自动生成的.java类都有哪些元素分别代表什么意思 DESCRIPTORBinder的唯一标识,一般用当前Binder的类名表示,比如本例中的"test.sym.com.myapplication.IBookManager" asInterface(android.os.IBinder obj)用于将...原创 2018-04-15 19:10:36 · 1636 阅读 · 1 评论 -
Smali 语法学习
可以根据Dalvik opcodes来学习这些 smali 指令 new-instancenew-instance v0, Ljava/lang/String; # 创建String 对象 invoke-directinvoke-direct {p0}, Ljava/lang/Object;->()V # 表示直接调用无参构造方法 invoke-virtu...原创 2018-05-23 16:56:05 · 4423 阅读 · 1 评论