摘要:1. 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提
阅读全文
摘要:1. IntentService原理 IntentService是一种特殊的Service,既然是Service,使用的时候记得在AndroidManifest清单文件中注册。 并且它是一个抽象类,因此必须创建它的子类才能使用IntentService,IntentService可用于执行后台耗时的
阅读全文
摘要:1. HandlerThread Android HandlerThread 完全解析 Handler与HandlerThread区别,HandlerThread应用(对比AsyncTask) 备注: Handler机制的分发中心就在Looper中的loop(),loop()方法是一个阻塞方法(里面
阅读全文
摘要:1. 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了。但是,正如上篇文章当中所说到的,属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做到的属性动画也能做到,补间动画做不到的现在属性动画也可以做到
阅读全文
摘要:1. 属性动画(Property Animation)引入: 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。 逐帧
阅读全文
摘要:下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对addIntArray方法进行声明,如下: 3. 生成com_himi_addarray_MainActivity.h头文件,
阅读全文
摘要:1. 还是以"02_两个数相加"为例,你会发现这个jni程序只能在ARM处理器下运行,如下: 如果我们让上面的程序运行在x86模拟器上,处理平台不对应,报如下错误: 03-29 03:09:25.378: E/AndroidRuntime(1379): at dalvik.system.Native
阅读全文
摘要:1. JDK1.6 ,进入到工程的bin目录下classes目录下: 使用命令: javah packageName.ClassName 会在当前目录下生成头文件,从头文件找到jni协议方法 下面举例演示: (1)进入"02_两个数相加"工程,如下: (2)进入到bin/classes目录下,如下:
阅读全文
摘要:1. NDK开发步骤(回忆一下HelloWorld案例): (1)创建工程 (2)定义native方法 (3)创建jni文件夹 (4)创建c源文件放到jni文件夹 (5)拷贝jni.h头文件到jni目录下(jni.h头文件在ndk目录\platforms\android-14\arch-arm\us
阅读全文
摘要:1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码: (1)hello.c : • jstring :数据类型就是 void*(指向一个空区域,初始化的指针) 在jni.h文件下: typedef void* jobject; typedef jobject jclass; typedef j
阅读全文
摘要:1. 逻辑思路过程图: 2.下面通过一个HelloWorld案例来说明一下JNI利用NDK开发过程(步骤) 分析:我们在Win7系统下编译的C语言代码,我们知道C语言依赖操作系统,不能跨平台,所以我们要通过NDK工具把在Win7系统下编写的C代码,转化为可以在Linux(Linux2.6.6 And
阅读全文
摘要:1.交叉编译 (1)概念 在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码。 e.g: 电脑端 手机端 win7 intel >>> 编译 >>>> arm/mips/x86 Android(Linux2.6.6)运行的二进制代码 电脑端编写编译出可以在手机端运行
阅读全文
摘要:1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?> getClass(); (来自源码Object.java) 上面方法没有方法体,但是它不是抽象方法,它是具体方法,因为它加了native修
阅读全文
摘要:1.新建一个案例如下: 2. 不需要添加权限,同时这里布局文件不做修改,来到MainActivity,如下: 3.布署程序到模拟器上,如下: 在系统联系人中添加一个联系人,发送短信给这个联系人,如下: 观察Logcat打印的日志,如下: 09-15 07:42:33.109: I/System.ou
阅读全文
摘要:下面通过3个应用程序之间的交互说明一下内容观察者: 一、 如下3个应用程序为相互交互的: 二、交互逻辑图: 三、具体代码: 1. 16_数据库工程: (1)数据库帮助类BankDBOpenHelper(继承自SQLiteOpenHelper): (2)操作数据库的工具类BankDBDao,如下: (
阅读全文
摘要:1. 内容观察者 不属于四大组件,只是内容提供者ContentProvider对应的小功能。 如果发现数据库内容变化了,就会立刻观察到。 下面是逻辑图: 当A应用中银行内部的数据发生变化的时候,A应用会发送数据到一片公共内存,内存观察者会读取这个公共内存中的数据。从而知道A应用的数据库发生变化。 这
阅读全文
摘要:1.添加联系人逻辑思路 (1)首先在raw_contacts创建一个新的id (2)在data表里面添加这个id对应的数据 2.下面通过一个案例,说明一下如何添加一条数据到联系人: (1)首先我们关注一下布局文件,activity_main.xml,如下: 布局效果如下: (2)其次是MainAct
阅读全文
摘要:1.重要: 系统删除一个联系人,默认情况下并不是把这个联系人直接删除掉了,只是做了一个标记,标记为被删除。 2.前面一讲说过了如何获取系统联系人信息(通过ContentProvider),获取联系人信息是经常使用,下面封装成工具类,方便以后调用: 下面通过案例说明一下: (1)Android工程如下
阅读全文
摘要:1.系统联系人的数据库(3张最重要的表) (1)raw_contacts 联系人表 保存联系人的id contact_id (2)data 数据表 保存联系人的数据 (3)mimetypes MIME数据类型表 2.因为如果要访问ContentProvider,必须要了解URI的设置(authori
阅读全文
摘要:1.虚拟短信应用场景: 急着脱身?应付老婆(老公、男女朋友查岗)? 使用虚拟通话短信吧。您只需通过简单设置,软件就会在指定时间会模拟一个“真实”来电或短信来迷惑对方,通过“真实”的证据让对方相信你,借此脱身!也是应付检查、朋友之间搞笑的利器,锁屏状态下可也虚拟来点哦。 2.下面通过实例案例演示其逻辑
阅读全文