Android系统框架
四大组件
Activity组件
Activity组件即我们看到的APP的每个页面,每个activity都要卸载androidxxx.xml文件中 Activity组件生命周期 oncreate方法在程序打开时创建一个页面,即首页,但是用户还不能看见该页面 onstart方法启动开见面,此时用户可以看见该页面,但用户无法点击 onresume方法,获得焦点,此时页面可以被操作 onpause方法:在挂起到后台或者结束运行,返回一个面时被调用 onstop方法:和onpause方法一样 ondestory:在正常退出程序时调用 不同activity之间传输数据用Intent
Service组件
Service;为服务、个人理解就是一个一个功能、比如播放音乐就是一个service service有以下俩种启动方式、service的三种生命周期onstart、oncreate、ondestory startService:调用者调用stop自动调用destory、没有stop,会在后台一直运行,包括直接结束APP binservice:与调用者同生共死、如一个activity调用service、退出该activity,该service自动停止 创建一个播放音乐服务的讲解 1、创建一个MusicActivity、设置setcontentview,绑定按钮findViewById、设置意图、 写init方法创建一个按钮监听器onclickListener,利用switch语句调用响应按钮方法,start(intent)调用startservice进而调用music中的onstart方法 最后利用setsetOnClickListener为按钮设置监听器 创建一个activity,调用Init方法、 写一个service实现Onstart oncreate ,ondestory on bind unbind方法
Broadcast组件
Android broadcast receiver组件有以下案例、外拨电话,短信到来 电池电量低 sd卡状态 卸载安装 开机启动等等 个人理解就是接收一个信号
Content Provider内容提供者
安卓数据存储方式
Sharedpreference存储方式
0即为私有的操作
文件存储数据方法
SQLite数据库存储方式
查看/data/data/包名/databases/存放着sqlite的数据库文件
APK打包流程
dex文件为源码文件 Resouices.asrc为R.java文件经过AAPT的产物 其他资源未见包括libs res andoidmanifast文件 Meta-inf时签名后的产物 META-INF目录存放的是所用到的证书签名文件,包括:MANIFEST.MF(摘要文件)、 CERT.SF和CERT.RSA。其中MANIFEST.MF文件是对每个文件的SHA-256-Digest;CERT.SF是对每个文件的头3行进行SHA-256-Digest;CERT.RSA这个文件保存了签名和公钥证书
APP启动流程
Dalvik
Dalvik字节码
1、Dalvik寄存器,可以存放任意类型数据,<=32位一个寄存器、一次类推 2、寄存器命名法 v命名发: 局部变量寄存器:v0-vn 参数寄存器:vn-vn+m p命名法 变量寄存器:v0-vn 参数寄存器:p0-pn
3、dex文件反编译工具 java编译成.calss,编译成.dex,反编译成smail .java---->.class--->.dex-->.smail jx.jar:.calss->.dex dx -dex --output=com.xxx.demo/src/xxx.class Bksmail:.dex->.smail java -jar bksmail.jar -o smail_out/ xxx.dex smail.jar:.samil打包成.dex java -jar smail.jar smail_out -o xxx.dex 4、Davlvik字节码类型
5、字段(即变量) Lpackage/name/ObjectName;->FieldName:Ljava/lang/String 某个报下名为objectname的类存放名为Fieldname的String类型变量 6、方法 Lpacjage/name/objectname;->methodname(III) Z 某个包下名为objectname的类存放有名为methodname的方法,该方法有三个int的参数,方法返回类型为布尔类型
Davlik指令集
13中davlik指令 1、空操作指令的助计符为nop。他的值为00,通常为nop指令被用来作对齐代码之用,无实际操作。2、数据操作指令 move move VA,VB 将VB寄存器的值赋给VA寄存器、原寄存器与目的寄存器都为4位 move /form16 vAA,vBBBB寄存器的值赋给VAA寄存器,源寄存器为16位,目的寄存器为8位
move-result VAA:接收方法的返回值放到VAA寄存器中
3、返回指令 return就是返回指令的意思
4、数据定义指令 数据定义指令用来定义程序中用到的常量、字符串、类等数据
5、实例操作指令 Instance-of:判断是不是某类的实例
6、数组操作指令
8、跳转指令
9、比较指令
10、字段操作指令 普通字段:iget/读 input/写 静态字段:sget读/sput写 put从左到右 p0为this get从到左
11、方法调用
12、数据转换指令
13、数据运算指令