WEB开发网
开发学院手机开发Android 开发 Android SDK 开发之应用程序基础 阅读

Android SDK 开发之应用程序基础

 2010-03-23 04:53:00 来源:WEB开发网   
核心提示:ID,元素也有一个process属性用来设置所有component的默认属性值,Android SDK 开发之应用程序基础(11),所有的component都在一个进程中的主线程中初始化,对component的系统调用是由该线程调度的,它还包含RPC接口的声明,你需要继承Stub来实现这些方法,对每一个实例有不同的线程
ID。元素也有一个process属性用来设置所有component的默认属性值。

所有的component都在一个进程中的主线程中初始化,对component的系统调用是由该线程调度的。对每一个实例有不同的线程。因此,实例方法 — 例如View.onKeyDown()这样的报告用户动作和生命周期通知的方法 — 永远在主线程中运行。这意味着component不应该做耗时的和阻塞的操作,而是应该创建其它的线程来做。

Android可以决定在资源不足时关闭一个进程。在进程内运行的应用程序的component随之关闭。当有事情要做时,一个进程又会启动。

Android在决定关闭哪个程序时会计算它们对用户的相对重要性。例如,不可见的程序比可见的重要性低。因此是否关闭一个进程的决定取决于component的状态,下一节我们讨论之。

Threads

即时你可以将应用程序限制在一个单个进程中,有可能你也需要启动一个线程来做一些后台工作。由于用户界面需要永远快速响应,负责activity的线程不应做耗时多的工作。这些工作应该放在另一个线程中做。

线程使用Java Thread对象在代码中创建。Android提供了一些类来方便管理线程 — Looper用来在线程中运行一个消息循环,Handler用来处理消息,HandlerThread用来在消息循环中设置一个线程。

Remote procedure calls

Android 有一个轻量级的RPC机制。在这里一个方法在本地调用,但在远程执行(在另一个进程中),再将结果返回给调用者。这要求将方法调用和它的数据分解到操作系统可以理解的级别,将其从本地进程和地址空间转移到远程进程和地址空寂那,然后重新组织和调用。返回值必须从相反的方向传送。Android提供了做这些事情的代码,所以你可以集中精力来定义和实现RPC接口本身。

一个RPC接口可以只包含方法。所有的方法都是同步运行(本地方法阻塞直到远程方法完成),即使没有返回值。简而言之,该机制如下:首先使用IDL(interface definition language)定义一个RPC接口。aidl工具从这个声明来生成一个Java接口定义,该定义对本地和远程进程都有效。它包含两个内部类,如下图所示:


内部类具有管理在IDL中定义的rpc接口的代码。两个内部类均实现IBinder接口。其中一个是系统本地内部调用的,另外一个成为Stub的扩展了Binder类。除了IPC调用的内部代码外,它还包含RPC接口的声明。你需要继承Stub来实现这些方法,如图所示。

上一页  6 7 8 9 10 11 12 13 14 15 16  下一页

Tags:Android SDK 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接