1.
安卓系统简单结构:
基础应用(java)
应用框架(java)
运行依赖库(c/cpp)
安卓运行时(Android runtime)基于Dalvik虚拟机
安卓基于Linux 2.6内核(kernel)
Dalvik由谷歌维护,旨在在无交换空间的OS上节省RAM和电量
Delvik是基于寄存器(register-based)的
基于寄存器比堆栈机更有效率优势
安卓在2.2之后支持JIT(just-in-time)即时编译
安卓的四个主要部分
1.活动(Activity)代表用户做什么,有个基类activity,建活动就应该派生
视图:(view)是一个GUI类,画矩形和对屏幕区域发生的事进行响应。
2.服务(service)没有用户界面的应用或应用组建
3.广播接收器(BroadReceiver)接收并对广播作出反应
没有UI但能调用有UI的活动(类似信号和槽?)
4.内容提供器(ContentProvider)管理应用数据(类似于API?)
安卓活动栈:活动由活动栈管理
[一个应用] -(请求地图位置)-> [一个应用][地图应用] -(返回操作)-> [一个应用]
安卓应用的生命周期(活动的三种状态)
1.停止 2.暂停(前台部分可见) 3.活动(前台全部可见)
Activity基类中 存在钩子函数,在状态转换时由底层状态调用
活动开始时会调用onCreate钩子函数,可见后还有onStart,onResume等在运行
当其他活动被调用时,原活动至少会被部分挡住,此时活动会被暂停,通过onPause实现
原活动完全不可见时,另一个活动会切断它,就会调用onStop
应用终止或因其他原因被销毁时会调用onDestory
应用框架在检测(?)到一个应用不在前台但占用很多资源时,安卓也会终止此应用
假如一个应用程序被(因为安卓嫌他占资源或别的原因而)终止
但用户(也许是通过活动栈)回到该应用,这就需要onCreate将活动再次创建并实例化
所以当停止时需要写代码存储应用状态以备恢复时使用
意图(Intents)如何从一个活动转到另一个活动,意图即一个活动传给另一个的异步信息
一般意图包含两段数据,一个是动作,然后是该动作所需数据的实际URL(abiliav://这样?)
安卓中还存在:
隐形意图(只需要说名要做什么以及一些所需的数据)
显性意图(更为普遍活动中明确了另一个活动是什么)
意图过滤器(明确指出哪个活动能够响应哪些意图)
如果N个应用能够响应同一个意图,会弹出框子让你选择(比如用啥浏览器打开网页)
真棒
安卓系统简单结构:
基础应用(java)
应用框架(java)
运行依赖库(c/cpp)
安卓运行时(Android runtime)基于Dalvik虚拟机
安卓基于Linux 2.6内核(kernel)
Dalvik由谷歌维护,旨在在无交换空间的OS上节省RAM和电量
Delvik是基于寄存器(register-based)的
基于寄存器比堆栈机更有效率优势
安卓在2.2之后支持JIT(just-in-time)即时编译
安卓的四个主要部分
1.活动(Activity)代表用户做什么,有个基类activity,建活动就应该派生
视图:(view)是一个GUI类,画矩形和对屏幕区域发生的事进行响应。
2.服务(service)没有用户界面的应用或应用组建
3.广播接收器(BroadReceiver)接收并对广播作出反应
没有UI但能调用有UI的活动(类似信号和槽?)
4.内容提供器(ContentProvider)管理应用数据(类似于API?)
安卓活动栈:活动由活动栈管理
[一个应用] -(请求地图位置)-> [一个应用][地图应用] -(返回操作)-> [一个应用]
安卓应用的生命周期(活动的三种状态)
1.停止 2.暂停(前台部分可见) 3.活动(前台全部可见)
Activity基类中 存在钩子函数,在状态转换时由底层状态调用
活动开始时会调用onCreate钩子函数,可见后还有onStart,onResume等在运行
当其他活动被调用时,原活动至少会被部分挡住,此时活动会被暂停,通过onPause实现
原活动完全不可见时,另一个活动会切断它,就会调用onStop
应用终止或因其他原因被销毁时会调用onDestory
应用框架在检测(?)到一个应用不在前台但占用很多资源时,安卓也会终止此应用
假如一个应用程序被(因为安卓嫌他占资源或别的原因而)终止
但用户(也许是通过活动栈)回到该应用,这就需要onCreate将活动再次创建并实例化
所以当停止时需要写代码存储应用状态以备恢复时使用
意图(Intents)如何从一个活动转到另一个活动,意图即一个活动传给另一个的异步信息
一般意图包含两段数据,一个是动作,然后是该动作所需数据的实际URL(abiliav://这样?)
安卓中还存在:
隐形意图(只需要说名要做什么以及一些所需的数据)
显性意图(更为普遍活动中明确了另一个活动是什么)
意图过滤器(明确指出哪个活动能够响应哪些意图)
如果N个应用能够响应同一个意图,会弹出框子让你选择(比如用啥浏览器打开网页)
真棒