1 / 3
文档名称:

31软硬整合开发的基础 认识Android的线程Thread模式.doc

格式:doc   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

31软硬整合开发的基础 认识Android的线程Thread模式.doc

上传人:baixue 2012/9/23 文件大小:0 KB

下载得到文件列表

31软硬整合开发的基础 认识Android的线程Thread模式.doc

文档介绍

文档介绍:(Thread)模式
在之前的课程里,都只介绍Java层的线程模式。其实担任软硬整合的嵌入式软件开发者,在开发Shared Library (*.so)及其卡榫类别时,更需要充分理解Android的线程模式,于此就来说说其原因吧!
在Android平台上开发软硬整合的共享链接库(Shared Library)时,由于是「共享」的程序组件,所以可能有许多Activity或Service等组件来呼叫此共享链接库(例如某一个*.so可执行档)。由于这些Activity或Service等组件可能是别人开发的,也在不同的进程里执行,也有可能是以子线程来呼叫。
这个时候,写共享链接库的开发者如何撰写其*.so链接库呢?即使*.so链接库写好了,也安装好了,又如何撰写在Java层与之相对应的「卡榫类别」(Hook Class)呢?
兹以Android平台所提供的MediaPlayer组件为例,。如下图:
 
开发此类别时,,一方面又要接受底层*.so所回传的信息,此种讯息到底是那一个线程所执行而传递回来的呢?如此才能将*.so组件纳入到Android平台里,让众多的Activity或Service等Java组件来共享之。
如果对Android的线程模式有充分的认识,就很容易弄清楚程序的写法。否则,甚至连别人所写的程序代码可能都不易看懂。例如,:
public class MediaPlayer
{
static {
("media_jni");
}
// 省略

public MediaPlayer() {
Looper looper;
if ((looper = ()) != null) {
mEventHandler = new EventHandler(this, looper);
} else if ((looper = ()) != null) {
mEventHandler = new EventHandler(this, looper);
} else {
mEventHandler = null;
}
/* Native setup requires a weak reference to our object.
* It's easier to create it here than in C++.
*/
native_setup(new WeakReference<MediaPlayer>(this));
}

这个建构式里的指令就是在处理线程的讯息交换,它是为了要让*.so能回传一些讯息给Java 层的应用类别。
此时,如果你能对Android有如下的认识,就很容易