WEB开发网
开发学院手机开发Android 开发 android service 学习 阅读

android service 学习

 2010-08-23 01:13:00 来源:WEB开发网   
核心提示:55 mediaPlayer = MediaPlayer.create(this, R.raw.tmp);56 mediaPlayer.setLooping(false);57 }58 if (!mediaPlayer.isPlaying()) {59 mediaPlayer.start();60 }61 }6263

55 mediaPlayer = MediaPlayer.create(this, R.raw.tmp);

56 mediaPlayer.setLooping(false);

57 }

58 if (!mediaPlayer.isPlaying()) {

59 mediaPlayer.start();

60 }

61 }

62

63 public void pause() {

64 if (mediaPlayer != null && mediaPlayer.isPlaying()) {

65 mediaPlayer.pause();

66 }

67 }

68

69 public void stop() {

70 if (mediaPlayer != null) {

71 mediaPlayer.stop();

72 try {

73 // 在调用stop后如果需要再次通过start进行播放,需要之前调用prepare函数

74 mediaPlayer.prepare();

75 } catch (IOException ex) {

76 ex.printStackTrace();

77 }

78 }

79 }

80

81}

我们看到Service中有个返回IBinder对象的onBind方法,这个方法会在Service被绑定到其他程序上时被调用,而这个IBinder对象和之前看到的onServiceConnected方法中传入的那个IBinder是同一个东西。应用和Service间就依靠这个IBinder对象进行通信。

启动后的界面如下图:

通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service。在 android平台中,一个进程通常不能访问其他进程中的内存区域。所以,他们需要把对象拆分成操作系统能理解的简单形式,以便伪装成对象跨越边界访问。编写这种伪装代码相当的枯燥乏味,好在android为我们提供了AIDL工具可以来做这件事。

AIDL(android 接口描述语言)是一个IDL语言,它可以生成一段代码,可以使在一个android设备上运行的两个进程使用内部通信进程进行交互。如果你需要在一个进程中(例如:在一个Activity中)访问另一个进程中(例如:一个Service)某个对象的方法,你就可以使用AIDL来生成这样的代码来伪装传递各种参数。

要使用AIDL,Service需要以aidl文件的方式提供服务接口,AIDL工具将生成一个相应的java接口,并且在生成的服务接口中包含一个功能调用的stub服务桩类。Service的实现类需要去继承这个stub服务桩类。Service的onBind方法会返回实现类的对象,之后你就可以使用它了,参见下例:

上一页  3 4 5 6 7 8 9 10  下一页

Tags:android service 学习

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