• Android中为什么需要服务?


    在解释这个问题之前, 先来看一个Android系统中进程的优先级(从高到低)

    1. 前台进程(foreground process ):  一个应用程序启动, 并且可以直接相应用户的点击,触摸事件.那么这样 进程就是前台进程, 它的优先级的最高的. 
    2. 可视进程(visible process) :  一个应用程序也启动了, 本来是直接处于前台,可以直接相应用户的触摸, 点击事件的,但是 现在一个其他的的应用程序盖住了它,但是还看得见. 那么这种进程称之为 可视进程.
    3. 服务进程(service process ): 一个应用程序 如果正常的退出了,但是这个应用程序启动的时候, 有一个服务启动了, 一直在后台运行, 那么这种进程就是属于 服务进程.
    4. 后台进程(background process): 一个应用程序 启动了(但是这个应用程序中没有 服务在运行了),  这个时候 点击了 home键(小房子), 那么这种进程就是属于 后台进程
    5. 空进程(empty process) : 一个应用程序,现在正常的退出了,没有任何组件在继续运行着, 那么这种进程称之为 空进程. 

    由此可见, Service对于android系统来说,杀死的优先级别是比较低的,一般不会杀死service, 这就保证了Service可以长期在后台运行.

    另外, Service是没有界面的, 也是运行在主线程中的,所以如果要在Service中执行耗时的操作,需要新建一条线程.

    服务分为两种:

    1.本地服务(Local Service):用于应用程序内部

    功能:用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。

    使用:在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

    2.远程服务(Remote Sercie):用于android系统内部的应用程序之间

    功能:可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。

    使用:可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。

  • 相关阅读:
    数组方法的扩展,如map,reduce,fliter,forEach方法
    设计模式总体概括
    centos yum 安装 tomcat
    idea springboot 打包 war
    idea使用tomcat运行maven打包的war
    CentOS 7 用 yum 安装 Nginx
    CentOS更换yum源
    城市代码表mysql
    更改idea启动内存信息
    (三)多表代码生成
  • 原文地址:https://www.cnblogs.com/wanghaoyuhappy/p/5293063.html
Copyright © 2020-2023  润新知