- android 首先是一个开放的软件协议栈,能够进行软件和硬件的整合。
- 建立以服务为导向的开发模式。
- 修正了上层JAVA和底层C++ module, 便于发挥硬件特色和数据展现交互的性能。
- 用户开发需要根据Android的框架特色来进行Android-like框架开发
- 整个开发流程应以框架为主,软件应用的控制点也应在框架层。
核心服务:(输入法、打印机等)
- 把硬件层HW层的差异性特征供APP层使用。
- 开机过程中应加载核心服务供多client共用。
核心服务种类:
- Java Service
- Native Service (经由 binder driver 管理)
Service Manager:
- SM是所有核心服务的管理者,用来管理其他的核心服务,android开机时会把SM加入到Binder Driver里。
500)this.width=500;" border="0">
- NativeService通过defaultServiceManager()获得SM的IServiceManager接口。
- 500)this.width=500;" border="0">
- 这样就可以通过该接口调用SM的服务,常用的为IServiceManager::getService()/SetService
- 核心服务一般应在独立进程中运行
- 必须提供IBinder接口,这样才可以让Java APP 层远程绑定呼叫
- 因为公用,所以要考虑临界区保护多线程安全。
制作步骤:
方法一:
- 在Native Service层定义C++类别,实现IBinder接口,通过SM提供的接口addService把服务对象放入Binder Driver中。
- 应用程序APP通过SM远程绑定改核心服务,此时SM会把核心服务的IBinder接口提供个APP
- APP通过IBinder::transact()来实现和核心服务的信息互动。
方法二:
- 在Java Service 层实现Binder类的子类,并通过SM把自身对象放入Binder Driver。
- 其他步骤同方法一。
范例:
|
在adb shell中后台运行Reg.exe[即启动核心服务的进程]后, 通过执行client程序后,在Logcat中看到client程序的信息输出。
范例仅仅演示了Native Service部分的Binder的搭建流程, Binder内容可以通过JNI给Java Service 进而给Java APP调用。
Java Service 的Binder实现方式类似,仅API部分需要修改。
Java 部分范例:
我是把activity 和 Service 放在同个APK文件中,发现一个问题,每次执行程序的时候发现 activity 和 Service的 OnCreate 函数都会执行一遍,虽然说ps中还存在这两个进程,后面会找些理论依据来证实这个现象。待述 ..., 有知道的也可以留言给我看看。
看看下面这张图, 呵呵 很早就看过了就是认识不够深刻,还是不明白why。
![Android應用框架,以及軟硬整合機會-LMLPHP Android應用框架,以及軟硬整合機會-LMLPHP]()
Java Service 的Binder实现方式类似,仅API部分需要修改。
Java 部分范例:
|
看看下面这张图, 呵呵 很早就看过了就是认识不够深刻,还是不明白why。
500)this.width=500;" border="0">
- 使用back键后, 程序无论是从HOME键调出的正在运行的程序还是从Tab ListView 中点击调出的程序都会自动执行OnCreate动作。
- 使用Home键后,再从HOME键调出的正在运行的程序时程序会延续上次退出后的状态。
- 总结: Android对按键的不同有对程序的运行状态做了不同的动作,我想到了我前几天看的android的各个按键的功能。^_^ 理解不够深刻阿。