简介:
  • 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。
  • 其他步骤同方法一。

范例:

 

Android應用框架,以及軟硬整合機會-LMLPHP
文件:simpleBinder.tar.bz2.rar
大小:2KB
下载:下载

 在adb shell中后台运行Reg.exe[即启动核心服务的进程]后, 通过执行client程序后,在Logcat中看到client程序的信息输出。


范例仅仅演示了Native Service部分的Binder的搭建流程, Binder内容可以通过JNI给Java Service 进而给Java APP调用。

Java Service 的Binder实现方式类似,仅API部分需要修改。
Java 部分范例:
Android應用框架,以及軟硬整合機會-LMLPHP
文件:Android-Activity-Service-1.rar
大小:31KB
下载:下载
我是把activity 和 Service 放在同个APK文件中,发现一个问题,每次执行程序的时候发现 activity 和 Service的 OnCreate 函数都会执行一遍,虽然说ps中还存在这两个进程,后面会找些理论依据来证实这个现象。待述 ..., 有知道的也可以留言给我看看。
看看下面这张图, 呵呵  很早就看过了就是认识不够深刻,还是不明白why。
Android應用框架,以及軟硬整合機會-LMLPHP
500)this.width=500;" border="0">
 问题解决:
  •  使用back键后, 程序无论是从HOME键调出的正在运行的程序还是从Tab ListView 中点击调出的程序都会自动执行OnCreate动作。
  • 使用Home键后,再从HOME键调出的正在运行的程序时程序会延续上次退出后的状态。
  • 总结: Android对按键的不同有对程序的运行状态做了不同的动作,我想到了我前几天看的android的各个按键的功能。^_^ 理解不够深刻阿。

10-25 09:23
查看更多