Android Service的两种启动方式

来源:互联网 发布:linux编译c程序 编辑:程序博客网 时间:2024/05/08 20:54

Service是Android的四大组件之一,主要运行于系统后台。它有两种启动方式:Context.startService()和Context.bindService()都可以启动Service。


1、调用Context.startService()启动

这种启动方式的生命周期是:启动时,startService()---->onCreate()---->onStart();停止时,stopService()---->onDestroy();如果调用者直接退出而没有停止Service,Service会在后台一直运行。调用startService()前,如果被调用的Service未被创建,则会先调用onCreate(),如果Service已经被创建,则不会调用onCreate(),而会直接调用onStart()。所以多次调用startService()并不会多次创建Service,但会多次调用onStart()方法。而且用startService()启动的Service,必须用stopService结束,服务结束时会调用onDestroy()。


2、调用Context.bindService()启动

    这种启动方式的生命周期是:启动时,bindService()---->onCreate()---->onBind();调用者退出时,unbindService()---->onUnbind()---->onDestroy();bindService(intent,conn,Service.BIND_AUTO_CREATE):

第一个参数是Intent对象;

第二个参数是ServiceConnection对象,创建这个对象是为了实现下面两个方法:

        public void onServiceConnected(ComponentName className, IBinder service) {            //        }        public void onServiceDisconnected(ComponentName className) {            //        }
实现这两个方法是为了判断服务的连接成功和断开连接。

第三个参数是创建服务的方式,一般为Service.BIND_AUTO_CREATE,绑定服务的时候自动创建。

0 0