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

Android SDK 开发之应用程序基础

 2010-03-23 04:53:00 来源:WEB开发网   
核心提示:Context.unbindService()来断开,很多客户可以绑定同一个service,Android SDK 开发之应用程序基础(17),如果该service没有启动,bindService()可以可选的启动它,无论它是怎么启动的,都可以让客户绑定,这两种模式并非相互独立,你可以绑定一个由 startServic
Context.unbindService()来断开。很多客户可以绑定同一个service。如果该service没有启动,bindService()可以可选的启动它。

这两种模式并非相互独立。你可以绑定一个由 startService()启动的服务。例如,一个后台音乐服务可以由一个指定了需要播放音乐的intent对象使用startService()来启动。只在这以后,可能是当一个用户希望操作播放器或者获取当前歌曲信息,一个activity才会绑定到该service上。在这种情况下,stopService()直到最后一个连接断开才会将service停止。

和activity一样,service也有生命周期方法。但比较少,并且为public而不是protected:

void onCreate()

void onStart(Intent intent)

void onDestroy()

通过实现这些方法,你可以管理service生命周期的两个循环:

完整周期:从 onCreate()被调用直到onDestroy()返回。和activity一样,一个service在onCreate()中进行初始化,并在 onDestroy()中释放所有资源。例如,一个音乐播放service可以在onCreate()中创建播放音乐的线程,并在onDestroy() 中停止该线程。

活跃周期:该周期从onStart()被调用开始。被传给startService()的intent对象被传给该方法,音乐service查看该intent对象来播放其指定的音乐。

service没有onStop()方法。

onCreate() 和onDestroy()方法在所有service中都被调用。无论它们被Context.startService()还是 Context.bindService()启动。但onStart()只会为由startService()启动的service调用。

如果一个service允许客户来绑定,有一些其它的方法需要实现:

IBinder onBind(Intent intent)

boolean onUnbind(Intent intent)

void onRebind(Intent intent)

onBind() 回调函数的参数intent对象就是bindService()所接受的intent对象,而onUnbind()中的intent对象是 unbindService()接受的intent对象。如果该service允许绑定,则onBind()返回用户用来与service交互的信息通道。onUnbind()方法可以要求onRebind()在新的客户连接到service时被调用。

下表列出了一个 service的回调函数。虽然它区分了使用startService和bindService启动的service,记住任何service,无论它是怎么启动的,都可以让客户绑定,因此任何service都可以接受onBind()和onUnbind()调用。

上一页  12 13 14 15 16 17 18 19  下一页

Tags:Android SDK 开发

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