自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 LruCache和DiskLruCache代码案例

```javaimport android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.os.Environment;import android.util.L...

2019-10-23 11:14:15 152

原创 系统应用配置管理

1 配置应用为系统应用(获得更高的权限)在AndroidManifest.xml文件中标签在配置android:sharedUserId=“android.uid.system”配合系统签名platform.jks2配置签名在app目录下的build.gradle文件中android {signingConfigs {release {keyAlias ‘platform’ 别名...

2019-05-08 11:00:12 764

原创 View的事件分发机制(View篇)

上篇博客为大家介绍了ViewGroup的事件分发机制,调用View的dispatchTouchEvent()方法,同样本篇采用源码注释的方式解析源代码,如果没有兴趣可以跳到本篇博客的结尾获得该段源码所得到的结论:/** * //向下传递这个touch屏幕事件去目标的View,或者这个View就是指定目标的View * Pass the touch screen motion ev

2016-09-28 09:26:45 384

转载 深入理解abstract class和interface

首先申明这边博客是转载自台湾人,也没能征得作者同意万分抱歉。但是由于台湾的网站大陆人无法访问,所以实在想更多的人看到,下面是原作者博客的链接地址:https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存

2016-08-18 22:10:07 2892

原创 View的事件分发机制(ViewGroup篇)

/** * {@inheritDoc} */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mInputEventConsistencyVerifier != null) { mInputEventConsistencyVerifier.

2016-08-03 19:58:00 1172

原创 View的事件分发机制(Activity篇)

这篇博客主要介绍在一个TouchEvent从Activity传递到View的流程,照例附上一张流程图:我们的TouchEvent首先接收到这个TouchEvent的是Acitivty中的dispatchTouchEvent(MotionEvent ev)方法,这个方法里面第19行是将这个Touch事件分发下去。但这只是在这个事件在窗口内,如果在窗口外, 则由Activity本身的onTouchEv

2016-07-21 17:42:44 2367

原创 View绘制之draw过程

这篇博客主要为大家介绍View绘制过程的最后一步,draw的过程。下面一张流程图为大家展示一下:下面这段是draw()方法的源代码: /** * 手动的给View(和所有它的子View)制定的Canvas.在这个方法被调用之前这个View必须已经 * 做了一个完整的布局。当重新绘制一个View,重载onDraw()方法代替重载这个方法。如果你要 * 重载这个方法

2016-07-12 15:15:56 1622

原创 View绘制之layout过程

这篇博客主要是接着上一篇为大家讲述View绘制的第二步layout(布局)全过程:首先要为大家普及一些相关知识:/** * Left position of this view relative to its parent. * //当前View的左边位置相对与父元素 * @return The left edge of this view, in pixels.

2016-06-27 23:27:39 1285

原创 View绘制之measure过程

本篇博客为大家介绍View原理中的measure过程,首先为大家介绍类MeasureSpec,下面是谷歌关于MeasureSpec的英文注释// 一个MeasureSpec封装了从父布局传给子布局的布局要求1、A MeasureSpec encapsulates the layout requirements passed from parent to child.//每个MeasureSpec

2016-06-22 10:53:36 566

原创 AsyncTask源码分析之Android篇

在上一篇AsyncTask源码分析中为大家做了一些基础知识的铺垫,这篇就为大家真正解析一下AsyncTask源码: 首先为大家介绍一些AsyncTask的一些特性: 1、AsyncTask在3.0版本以后默认是串行的 2、AsyncTask不能在非UI线程中创建 3、AsyncTask任务数量上限是128个 4、AsyncTask只适合短时间几秒的耗时操作,不适合长时间的耗时操作首先大家看

2016-06-05 19:09:50 502

原创 Handler与HandlerThread、IntentService源码解析

在前面的博客当中为大家分析过了Handler的源码,今天这篇博客的主要内容是为大家结合HandlerThread讲述一下Handler的另外一种比较酷炫的用法,以及这种酷炫的用法又是如何结合Service创造出IntentService这么酷的类的。首先为大家总结一下前面Handler几个关键的核心知识点: 1、Handler是通过Handler的实例化对象进行线程间的切换的 2、Handler

2016-05-26 22:30:06 780

原创 设计模式精要概括

单例模式重复创建一个类的不同对象会造成资源的浪费和问题的产生,通过单例模式只产生一个对象。策略模式大家都知道继承的最大优点是避免代码的重复,能够节省代码。接口和抽象方法可以避免问题和系统的复杂性。但是有没有一种方式既可以拥有接口和抽象方法这样避免问题的复杂性又可以拥有继承避免代码重复的优点。这种情况下,策略模式就产生了。策略模式到底是个什么鬼呢。说白了一个接口可以降低问题的负责性,但是自己写一个类去

2016-05-04 20:47:36 493

原创 构造器与垃圾回收器

1、惰性初始化(组合语法)使用的目的 :编译器如果简单的为每个引用都创建对象,会增加很多不必要的负担。使用方式 a 在定义对象的地方初始化。这意味着他们总能狗在构造器调用之前被初始化。 b 就在类的构造器中 c 在生成对象不值得生成对象的情况下,这种方式可以减少额外的负担 d 使用实例初始化代码:public class Child { private Object object;

2016-04-13 09:25:56 396

原创 常用英语单词

gallery 画廊、走廊 overlay 覆盖 picker 采摘者 album 相册、专辑 drag 拖拽 animate 动画 rational 理性 media 媒体 smooth 光滑 velocity 速度 gerate 伟大的 detection 侦察 prelimary 初步 customize 定制 rear 抚养、养育 concrete 具体的 r

2016-03-30 14:50:49 499

原创 日志分析总结

整机开发中日志分这几种 1、bugreport ANR信息、版本信息、手机型号 2、device JAVA层的日志信息 3、kernel CPU的使用情况、内存的使用情况 4、radio 网络使用情况 5、event ActivityManager 活动管理类 ServiceManager 点击事件日志具体分析方法 1、PID、UID PID表示每个进程 每个进

2016-03-30 14:29:00 2207 1

原创 AsyncTask源码分析之Java篇

解析AsyncTask源码之前,首先讲述与之相关的JAVA线程知识:知识点清单 1、Thread类 2、Runnable接口 3、Callable接口 4、synchronized关键字 5、volatile关键字 6、Future接口 7、RunnableFuture接口 8、FutureTask类 9、线程池的相关知识/** * A representation of

2016-03-29 14:57:37 498

原创 Handler消息机制源码解析(四)

这篇文章主要为大家讲述Handler使用过程中的一些优化小技巧(至于为啥么要这么做就又要来给大家说说源码了),以及在使用Handler过程中不小心会存在的内存泄露的情况。 首先大家来看一段代码:Message messageTest = new Message();mHandler.sendMessage(messageTest);再来看另一断代码的写法:Message message = mH

2016-03-24 09:05:06 479

原创 Handler消息机制源码解析(三)

这一篇博客主要为大家介绍Handler怎么接收到消息的,大家都知道Handler接收消息是在handleMessage方法里面,但是具体怎么接收到的很多人并不知道,下面让我们一起去看一下。大家都知道在子线程中实例化Handler对象之前除了了要添加Loop.prepare(),在之后还需要写Loop.loop()。在前两篇文章都没有提到Loop.loop()这个方法,第三篇就要提到这个方法了,因为接

2016-03-23 20:37:32 522

原创 Handler消息机制源码解析(二)

上一篇Handler消息机制(一)为大家讲述了Handler是如何创建的这篇Handler消息机制(二)将为大家介绍Handler是如何发送消息的。 一般使用的Handler方法Handler.post(Runnable)Handler.sendEmptyMessage()Handler.sendMessage()Handler.sendMessageDelayed()这四种方法是大家在Ap

2016-03-21 11:17:13 644 2

原创 Handler消息机制源码解析(一)

我们首先讲述Handler的创建 Hander有四种构造方法public Handler() { this(null, false); }public Handler(Callback callback) { this(callback, false); } public Handler(Looper looper) { this(lo

2016-03-18 14:59:09 643

原创 Git的使用(基于Linux)

git config –global user.name + 用户名ssh-keygen(生成密钥,可以拷贝下来)cd .sshcat id_rsa.pub(把生成的密钥复制进这个文件里面) gedit id_rsa.pub(修改这个文件)常用的git命令方法 git clone -b(表示分支) git log -p “过滤内容” git checkout + 分支名(切换分支) git

2016-03-16 16:45:02 632 2

原创 ADB命令的使用

adb root 获得root权限 adb reboot 重启手机 adb remount 重新挂载系统分区, 使系统分区重新可写 adb shell 执行命令必须进入shell环境 /system/priv-app 表示系统App所在的路径 adb pull 从手机获取文件 adb push 向手机写入文件实践 adb root adb remount adb she

2016-03-04 17:59:16 704 1

原创 Linux常用命令

1、gedit 命令表示修改 2、cat 命令表示查看 3、sudo 表示加入权限 4、vim 表示在终端查看 5、chmod a+x 表示修改都写权限 6、u 表示update 7、cp 表示拷贝 8、c 表示clean 9、grep 表示过滤 10、 a 表示all 11、~ 表示home/archermind 12 、. 表示隐藏 13 、CTRL+H 用来显示隐藏文件

2016-02-25 10:37:50 531

原创 NDK环境变量的配置以及编译方法(linux环境下)

1、下载NDK 2 、配置NDK的环境变量 a 、sudo gedit .bashrc (这里的bashrc文件在不同电脑下所在的路径不同) b 、export PATH=$PATH:/work/Android_NDK/android-ndk-r10e(/work/Android_NDK/android-ndk-r10e这个为ndk所在的路径) c 、source .bashrc 3 、编

2016-02-25 10:29:50 6110

原创 final、static、this、continue与break关键字的使用

final关键字的含义、作用: 对于基本类型,final使数值恒定不变。对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它指向另一个对象,然而,对象其本身确实可以被修改的,这句话怎么理解请看一个Demo。public class Value { int i; public Value(int i) { this.i = i; }

2016-02-14 11:30:39 719

原创 多态

1、惰性初始化(组合语法)使用的目的 :编译器如果简单的为每个引用都创建对象,会增加很多不必要的负担。使用方式 a 在定义对象的地方初始化。这意味着他们总能狗在构造器调用之前被初始化。 b 就在类的构造器中 c 在生成对象不值得生成对象的情况下,这种方式可以减少额外的负担 d 使用实例初始化代码:public class Child { private Object object;

2016-01-26 11:11:52 480

空空如也

空空如也

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

TA关注的人

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