Audiebant
笋因落箨方成竹,鱼为奔波始化龙- Posts
- Categories
- Friends
-
May 21, 2015
How to Design A Good API
Characteristics of good API Easy to learn Easy to use,even without documentation Hard to misuse Easy to read and maintain code that uses it Sufficiently powerful to satisfy requirements Easy...
Read More -
May 20, 2015
Handler 和 Looper 原理分析
前言 就应用程序而言,Android系统中的Java应用程序和系统程序相同,都是以消息驱动来工作的,大致原理如下: 有一个消息队列,可以在消息队列中投递消息。 有一个消息循环,可以不断从消息队列中取出消息,并做处理。 把待处理的消息加处消息队列中,一直加到队列尾,一些优先级高的也可以加到队列头,提交的消息可以是按键,触屏等物理产生的消息,也可以是系统或者是应用本身发出的请求消息。 处理线程不断的从消息队列中取出消息并处理。请求消息可以把优先级高的放到队列头,这样就可以优先处理。 Looper类用于封装消息循环,有一个消息队列。 Handler类封闭的消息投递,消息处理等接口。 Looper 分析 //定义一个LooperThread class LooperThread extends Thread{ public Handler mHandler; public void run(){ //调用prepare Looper.prepare(); ... //进入消息循环 Looper.loop(); } } //应用程序使用LooperThread {...
Read More -
May 14, 2015
Android Proguard
语法 -include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -injars {class_path} 指定要处理的应用程序jar,war,ear和目录 -outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称 -libraryjars {classpath} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件 -dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类。 -dontskipnonpubliclibraryclassmembers 指定不去忽略包可见的库类的成员。 保留选项 -keep {Modifier} {class_specification} 保护指定的类文件和类的成员 -keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好 -keepclasseswithmembers...
Read More -
Jan 23, 2015
AsyncTask
异步任务类 前段时间,用到AsyncTask, 发现自己有些忘了,温习了一下,顺便做个笔记。 实际业务中,如果访问网络需求多,频繁开启线程比较耗费资源,因此,我们需要使用一些线程池。 Google已经很好的封装好了一个异步任务类,AsyncTask。 AsyncTask 一般用于做一些耗时的操作,其中内部封装了子线程,帮我们开启子线程,帮我们去做一些事情. 打开AsyncTask源文件,首先看到的,它是一个抽象类,我们要使用它,要么写一个内部类,要么写个类继承它。 先简单的创建一个对象出来看一下主要的三个方法: new AsyncTask<Void, Void, Void>() { /** * 执行之前调用, 执行在主线程中. */ @Override protected void onPreExecute() { System.out.println("onPreExecute: " + Thread.currentThread().getName()); } /**...
Read More -
Jan 9, 2015
AES加密
AES加密 首先得说的是让我困扰的参数问题,只有这个问题搞明白了才能有然后. 示例 Cipher c = Cipher.getInstance("AES/ECB/PKCS5Padding"); 首先应该明白AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节), 当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度。 ECB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化偏移量 分组加密的几种方式 ECB(Electronic Code Book,电子密码本):是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。 CBC(Cipher Block Chaining,加密块链):是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。 CFB(Cipher FeedBack Mode,加密反馈)/OFB(Output FeedBack,输出反馈)实际上是一种反馈模式,目的也是增强破解的难度。 如果不指定算法模式,会默认使用ECB算法,而且完全忽略IV(偏移值/向量)参数, 如果忽略padding(补码/填充)方式,程序默认为PKCS5Padding; Cipher c = Cipher.getInstance("AES"); SecretKeySpec keySpec =...
Read More