Android Service的启动方式

来源:互联网 发布:程序员的数学 epub 编辑:程序博客网 时间:2024/05/17 04:44

Service没有用户界面,运行与后台。一般用于给前台Activity提供特定服务。服务不能自己运行,启动Service的方式有两种:Context.startService 或 Context.bindService。

(一)startService

    使用startService()方法启用服务后,调用者与服务之间没有关连。调用者直接退出而没有调用stopService的话,Service会一直在后台运行。下次调用者再起来仍然可以

 1)启动流程:

    如果调用前服务没有被创建,则会引起onCreate()->onStart();

    如果已被创建,则多次调用startService只会引起onStart()被多次调用。

 2)结束方式:

    只能调用Context.stopService()结束服务,系统会自动调用到onDestroy()方法。

 

(二)bindService  

    使用bindService()方法启用服务,调用者与服务绑定在一起了,调用者一旦退出,服务也就自动终止。

 1)启动流程:

    如果调用前服务没有被创建,则会引起onCreate()->onBind();

    如果已被创建但没有被绑定,则会引起onBind();

    如果服务已被绑定,则多次调用bindService并不会引起onCreate()和onBind()被多次调用。

 2)结束方式:

    调用者退出,系统会自动调用服务到onUnbind()->onDestroy()方法。

    如果调用者希望与正在绑定的服务解除绑定,可以调用Context.unbindService(),该方法会导致系统调用服务的onUnbind()-->onDestroy()方法。

 

注意:

1)如果第一次调用startService(), 系统会onCreate()->onStart();此时调用bindService, 只会onBind();如果第一次调用bindService(), 系统会onCreate()->onBind();此时调用startService, 只会onStart();

2)如果start和bind都调用了, 那么一旦服务被绑定(只要成功调用了bindService, 不管是先start后bind还是后bind先start), 就必须调用unbindService和stopService(先unbindService(导致onUnbind())再stopService(导致onDestroy()), 或者先stopService再unbindService(导致onUnbind()->onDestroy())都行)才能终止服务。


来自:http://blog.sina.com.cn/s/blog_49f62c3501010bkz.html

0 0
原创粉丝点击