安卓四大组件之service

作者在 2015-06-27 16:27:53 发布以下内容
 

 service 服务

  android四大组件之一 。它一直运行在后台,没有界面。

 

  创建service要素:

  1、继承service

  2、在清单文件里面配置:

     包名+类名

    

    

  启动服务的方法

  startServiceintent)方法;

  service生命周期: onCreate()  onstartCommand();

 

  注意:第一次开启服务的时候会调用onCreate(),onstartCommand

        服务没有结束之前在此开启不会创建新的服务,只会调用

        onstartCommand();

       

  关闭服务的方法:

   stopServiceintent

   service生命周期:onDestroy();

  

   注意:startService()开启的服务跟activity之间关系比较松散,

     activity关闭之后service依然存在。

    

    

  绑定service

  bindService(service , conn, Context.BIND_AUTO_CREATE);

  生命周期onCreate()  onBind()(返回一个IBinder类型的对象,没有就返回null

 

  参数: 第一个:intent对象

         第二个:ServiceConnection对象(声明成成员变量)

         第三个:Context.BIND_AUTO_CREATE

        (当我们绑定服务的时候,如果服务不存在,会自动开启)

       服务连接对像      

    ServiceConnection conn = new ServiceConnection() {

              @Override

              public void onServiceDisconnected(ComponentName name) {

                     //服务异常终止的时候会被调用

              }

              @Override

              public void onServiceConnected(ComponentName name, IBinder service) {

                     //onBind()返回一个非空的IBinder类型的对象的时候就会被调用

             binder = (MyBinder) service

              }只有这一个作用,用来和service相连

               

  解除绑定:

  unbindService(conn);

  生命周期: onUnBind() onDestroy();

 

  参数:是调用bindService() 的第二个参数对象。

 

  注意:通过bindService()开启的服务跟activity关系比较紧密,

        会随着activity生命周期结束而结束。

       

       

  注意:service的生命周期不是完全跟activity的生命周期绑在一起的。

      如果先通过startService()开启服务之后,再去绑定服务,

      我们关闭activity之后,服务不会被关闭,只会解除绑定。

Activity通过绑定service的方式去获取service里面的方法:

步骤:

   1、在Activity里面获取IBinder型的对象

      a、在service里面声明一个类MyBinder

              继承Binder(实现IBinder

      b、在类MyBinder创建一个方法去调用service里面的方法

      C、创建MyBinder类型的对象。

      d、在onBind()里面返回MyBinder类型的对象(自动转型IBinder

     

      e、在activityonServiceConnection();获取IBinder类型对象。

         然后把他转换成MyBinder类型的对象,就可以使用里面的方法

        

         

默认分类 | 阅读 1330 次
文章评论,共0条
游客请输入验证码
文章分类
最新评论