1、The difference of Dalvik and JVM?**
A、编译后的文件格式不一样
Dalvik是 .dex--->.odex。
JVM是 .class--->.jar
B、基于的架构不一样(存储方式)
Dalvik是基于寄存器的,是在cpu内部的,利用总线,效率会更高
JVM是基于栈的架构
**2、Android的体系结构**
A、Application
B、Application Framework
Activity Manager 管理应用程序的生命周期
Window Manager 启动应用程序的窗体
View system
Sensor Manager 传感器
Location Manager 位置管理
C、函数库(Android Runtime Library)
webkit,SQLite,SSL,OpenGL,SGL
D、Linux内核(Kernel)
安全机制,内存管理,进程管理,网络协议栈,电源管理,wife驱动,显示驱动。
**3、adb: android debug bridge(安卓调试连接桥)**
采用的是Socket(IP+端口号)的方式进行链接
reset adb = adb kill-server
adb start-server
**4、DDMS: Dalvik Debug manager System**
5、 adb install ***.apk
a,把当前apk拷贝到/data/app目录下
b,在/data/data目录下会建立一个目录,这个目录和包名一致。
二、Android应用程序的组成(四大组建)
1. Activity Content Provider Broadcast Service
view 内容提供者(数据库) 广播 服务
Intent意图(是连接四大组建的纽带)
2. assert和res目录的区别
a、res下的文件会在R.java文件里面产生一个Id,并会把资源文件进行压缩
b、assert不会产生id,也不会进行压缩
三、Android核心组建Activity
1、MainActivity.java对应一个activity_main.xml
2、fill_parent(由于使用时描述不清楚,所以变成了match)
match_parent 适配父容器
wrap_content 包裹内容
3、创建Activity的步骤
定义一个类去继承Activity、
重写Activity里面的onCreate方法、
在androidmanifest.xml里面进行注册、
新建一个对应的布局文件,添加响应的组建
4、intent-filter 展示应用程序的图标
5、button点击事件写法有四种:
a、直接在类中实现OnClick接口
b、匿名内部类
c、内部类
d、新类(Context 传值)Context上下文描述应用程序的相关信息
四、Activity的生命周期
1、OnCreate---> 当Activity被创建时执行
OnStart---> 当Activity看得见,但是还不可进行交互
OnResume----> 当Activity可以看得见并且可以进行交互的时候
OnPause----> 当Activity不能响应事件时
OnStop----> 当Activity看不见时
OnDestroy 当Activity被销毁时
2、可视生命周期:
OnStart----->OnStop
3、前台生命周期:
OnResume--->OnPause
4、横竖屏切换生命周期:
a、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
b、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
c、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
android:screenOrientation="landscape"是限制此页面横屏显示,
android:screenOrientation="portrait"是限制此页面数竖屏显示。
步骤一:
ctrl+F进行横屏切换
Activity会被销毁并重新创建
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
步骤二:
再按 ctrl+F切换到竖屏,会执行两边生命周期
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
步骤三:
修改AndroidManifest.xml,把该Activity添加 android:configChanges="orientation",执行步骤1
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
步骤四:
再执行步骤二,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onConfigurationChanged-->
五、Intent(意图,即对即将执行的操作的描述)
1、显示意图(显式的去调用)
2、隐式意图
意图过滤器:只要满足意图过滤器中的设置(动作、类别、数据)
该意图就能被激活
非常清楚包名和雷鸣时,用显式意图,不清楚时使用隐式意图。
3、传数据
使用方法:putExtra
返回值:setResult onActivityResult