zoukankan      html  css  js  c++  java
  • service

    Service总结

    长期在后台运行的, 没有界面的组件, 用来在后台执行一些耗时的操作

    Service是一种在后台长期运行的,没有界面的组件,由其他组件调用开始运行;

    服务不太会被kill,即使在内存不足时被kill,当内存恢复时,服务会自动复活,例如下载就可以放入服务中来做,下载时,启动服务,完成时,关闭服务;

    1、创建与使用Service

    1)、定义类继承Service, 清单文件中声明<service>,同样也可以配置意图过滤;

    2)、使用Intent来开启Service,在其他组件中调用startService方法;

    3)、停止Service,调用stopService方法;

     

    2、生命周期

    Service中的生命周期方法(Context调用执行):

    1)startService()             如果没创建就先onCreate()再startCommand(), 如果已创建就只执行startCommand();

    2)stopService()              执行onDestroy()

    3)bindService()              如果没有创建就先onCreate()再onBind()

    4)unbindService()          如果服务是在绑定时启动的, 先执行onUnbind()再执行onDestroy(). 如果服务在绑定前已启动, 那么只执行onUnbind();

    3、开启服务的2种方式

    2种不同开启方式的区别:

    1)startService:

           开启服务,服务一旦开启,就长期就后台运行,即使调用者退出来,服务还会长期运行;

           资源不足时,被杀死,资源足够时,又会复活;

    2)bindService:

           绑定服务,绑定服务的生命周期会跟调用者关联起来,调用者退出,服务也会跟着销毁;

           通过绑定服务,可以间接的调用服务里面的方法(onBind返回IBinder);

     

    4、服务混合调用生命周期

    一般的调用顺序:

    ①、start  -> stop                    开启 –> 结束

    ②、bind  -> unbind                 绑定(服务开启) -> 解绑(服务结束)

    混合调用:

    ①、start –> bind -> stop->unbind->ondestroy                通常不会使用这种模式

           开启 –> 绑定 –> 结束(服务停不了)->解除绑定(服务才可停掉)

    ②、start –> bind -> unbind -> stop                          经常使用

           开启 –> 绑定 –> 解绑(服务继续运行)-> stop(不用时,再停止服务)

             这样保证了服务长期后台运行,又可以调用服务中的方法

  • 相关阅读:
    运行缓慢的查询语句
    EditPlus 替换所有文件夹下的文件包含子文件夹
    PRM–pageLoaded事件
    DataSet接收XML数据并按条件搜索
    复杂数据类型使用基础
    WebService客户端调用错误处理
    仿GOOGLE个性首页可移动图层效果
    asp.net 2.0中md5密码加密
    页面上的可鼠标移动内嵌页面层,并有关闭按钮,背景不可点击
    最好的。NET反编译工具
  • 原文地址:https://www.cnblogs.com/dubo-/p/6676082.html
Copyright © 2011-2022 走看看