Android SDK 开发之应用程序基础
2010-03-23 04:53:00 来源:WEB开发网这两种模式并非相互独立。你可以绑定一个由 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()调用。
更多精彩
赞助商链接