zoukankan      html  css  js  c++  java
  • android service

    概念:android service 服务, 是andorid 四大组件之一

    作用:用于处理后台任务

    运行特性:它本身是跑在主线程中的的,所以如果在service 中处理耗时操作,应该启动子线程或者子任务来执行

    使用:

    1. 启动方式: startService bindService

    • startService 这种方式启动的service 和调用者之间没有直接的关联关系,就是说启动后即使调用者销毁了, 后台会一直跑着这个service, 除非调用stopService方法
    • bindService 这种方式启动的service是和调用者紧密联系在一起的,这种启动的service会随着调用者的销毁而销毁,也可以调用unbindservice主动销毁

    2. 生命周期:

    3. service 重要的理解点

    • 第一次点击:不管是startService还是bindService,如果service还未存在,那么会调用 
      onCreate,之后如果是startService那么调用onStartCommand(),如果是 
      bindService那么会调用onBind() 
      之后,如果再调startService(),那么会调用onStartCommand();如果再调用 
      bindService那么如果第一次点击是bindService,那么就不会调用onBind(),否则 
      什么方法都不会被调用。

      当bindService后,不能stopService,需要通过unBindService()来解除绑定。

      只是startService()后,不可以通过unBindService()来销毁service

    • 通过bindService()函数绑定Servcie时, onCreate()函数和onBinde()函 
      数将先后被调用 
      通过unbindService()函数取消绑定Servcie时,onUnbind()函数将被调用, 
      如果onUnbind()函数的返回true,则表示在调用者绑定新服务时, 
      onRebind()函数将被调用

      取消绑定仅需要使用unbindService()方法,并将ServiceConnnection 
      传递给unbindService()方法 
      需注意的是,unbindService()方法成功后,系统并不会调用 
      onServiceDisconnected(),因为onServiceDisconnected()仅在意外断开 
      绑定时才被调用

    • startService()的目的是回调onStart()方法,onCreate() 方法是在Service 
      不存在的时候调用的,如果Service存在(例如之前调用了bindService,那 
      么Service的onCreate方法已经调用了)那么startService()将跳过onCreate 
      () 方法。 
      bindService()目的是回调onBind()方法,它的作用是在Service和调用者之 
      间建立一个桥梁,并不负责更多的工作(例如一个Service需要连接服务器 
      的操作),一般使用bindService来绑定到一个现有的Service(即通过 
      StartService启动的服务)。

       
    • 多次调用startService和bindService ,最终都是同一个对象
       
  • 相关阅读:
    创业之路——学习JavaScript
    ASP.NET 登录身份验证 二 自定义模式(framework)
    权限系统思考
    工作流文献研究 1
    ASP.NET登录身份验证 一
    ERP 数据流层 Namsara v2.0 预告
    ORM 革命 —— 复兴 | ORM Revolution Revived
    我的程序设计之道
    细颗粒度的权限系统 理论探索
    一个企业系统,到底有多少可以形成框架?
  • 原文地址:https://www.cnblogs.com/wangzehuaw/p/wangzh.html
Copyright © 2011-2022 走看看