zoukankan      html  css  js  c++  java
  • 关于Android的Service知识点,你知道吗?

    目录

    学习Service相关知识点:

    1. 概述;
    2. Service生命周期;
    3. Service的基本用法;
    4. 服务。
    • 问:达叔,今日工作累吗?

    • 答:累啊,那么问你,你知道Android中的
      Service(服务)吗?~

    • 问:哥,这么干的吗?

    • 答:呵呵,是的,~

    概述:

    在Android中Service是一个在后台执行长时间运行操作,而不需要和用户交互的应用程序组件。主要是用来后台处理网络事务,播放音乐,执行文件操作和content provider进行交互等。

    • 答:简要地说,Service的运行不依赖任何用户界面,是一直保持在后台运行的。
      如果当某个应用程序被关闭时,所有依赖于该应用的服务也就会停止了~
    • 问:哦~

    对于,Service服务的分两种类:

    一:Started Service,二:Bound Service。(英文理解:开启服务,绑定服务)。这两种服务各有各的特色。不过在理解之前,先看看它们的生命周期情况(图片来源于官方):

    可以看出两种启动方式区别:

    Call to startService -> onCreate() -> onStartCommand() -> Service running -> onDestroy()

    Call to bindService() -> onCreate() -> onBind() -> onUnbind() -> onDestroy()

    从中可以看出:

    一:使用startService()方法启动服务,调用onStartCommand()方法启动Service,启动Service的组件与Service没有联系,所以关闭组件,后台的Service也在运行中。

    二:使用bindService()方法绑定来启动服务,调用onBind()方法来启动,将启动Service的组件和Service绑定在一起,关闭组件则Service会停止。

    • 问:那有什么要注意的吗?
    • 答:其实这两种方法并不冲突,使用startService()启动Service后,可以再使用bindService()方法进行绑定
      到时,你在调用stopService()或自身stopSelf()方法和unBindService()方法就行,注重创建与销毁,才能更好理解~

    Service的基本用法:

    创建一个Service类,重写 onCreate(),onStartCommand(),oonDestroy(),这三种通常使用的方法。

    定义一个MyService的类,代码如下:

    补充说明:

    Service(服务)默认是执行主线程,不是默认运行在子线程,和进程中。如果要进行耗时操作,那么就要在开启子线程操作和使用异步消息处理机制。

    不然会出现主线程被(ANR)的情况,ANR为应用无反应。

    在创建Service时,系统会自动在配置文件对MyService进行注册:

    可利用Intent可以启动和停止Service:

    • 问:对于Service内容可以回顾一下吗?

    • 答:额,一:对于Started Service,当一个组件调用startService()方法请求服务时,系统会调用它的生命周期方法,启动后,会在后台无限期运行下去,直到完成工作调用stopSelf()或stopService()方法来终止服务的~

    • 问:嗯,好的~

    • 答:额,二:对于Bound Service的启动,当其它组件调用bindService()进行绑定服务时,系统会调用它的生命周期方法,,其中有客户端绑定到Service,那么客户端通过IBinder接口与服务进行通信,客户端通过unbindService()方法进行断开连接,调用onUnbind()方法解绑定,系统调用onDestroy()方法来销毁~

    对于掌握Service(服务)知识点。
    Service用于后台执行用户指定的操作。
    学习不是速成,内容理解,多练多用多查多看即可。

    喜欢本文的朋友们
    欢迎关注,点赞
    收看更多精彩内容

  • 相关阅读:
    CControlLayer
    CBiontCache
    CHero
    CWidgetMgr---cpp
    CWidgetMgr---H
    CXAnimation类
    CXAnimation.h动画类
    CXCommon.h工具类
    【leetcode】441. Arranging Coins
    【linux基础】关于ARM板子使用O3编译选项优化
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932596.html
Copyright © 2011-2022 走看看