IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android Service -> 正文阅读

[移动开发]Android Service

第七章 Service

Service是一个长期运行在后台的用户组件,没有用户界面。即使切换到另一个应用程序,服务也可以在后台运行,因此服务更适合执行一段时间而又不需要显示界面的后台操作,例如下载数据,播放音乐等。

7.1 服务的创建

服务是Android四大组件之一,它的创建和广播接收者类似,File -> New -> Service - >Service。

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

onBind方法用于绑定服务,并返回一个IBind对象。服务创建完成后会自动在AndroidManifest.xml文件中对服务进行注册。

7.2 服务的生命周期

服务的启动方式有两种,分别是startService和bindService.使用不同的方式启动服务,其生命周期也是不同的。

开启服务(startService)

服务一旦开启就与调用者没有任何关系, 当调用者Activity退出时,服务仍在运行,不会影响后台service的运行。

在Activity中不能调用服务里面的方法

绑定服务(bindService)

通过绑定方式开启服务,服务跟服务不求同生,但求同死。如果调用者的Activity退出了,那他绑定的服务也会跟着退出。

在Activity中能调用服务里面的方法
————————————————
版权声明:本文为CSDN博主「ArThur_Bob」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/windownew11/article/details/9301211

  • onCreate() 第一次创建服务时执行的方法
  • onDestroy() 服务被销毁时执行的方法
  • onStartCommand() 客户端通过调用startService方法启动服务时执行该方法;
  • onBind() 客户端通过调用bindService方法启动服务时执行该方法;
  • onUnbind() 客户端通过调用unBindService方法断开服务绑定时执行该方法;

7.4 服务的通信

前面讲了服务的两种启动方式,可以发现通过绑定开启服务后,服务与Activity之间是可以通信的,通过Activity可以控制服务进行一些操作,下面针对Activity与服务之间的通信进行详细讲解。

7.4.1 通信方式

通信方式有两种,一种是本地服务通信,一种是远程服务通信.本地服务通信是指应用程序内部的通信,远程服务通信是两个程序之间的通信。使用这两种方式通信时,必须保证服务是以绑定方式开启的。

  1. 本地服务通信

    在使用本地服务通信时,首先需要创建一个Service类,该类会提供一个onBind方法,onBind方法的返回值是一个IBinder对象,IBinder对象会作为参数传递给ServiceConnection类中的onServiceConnected()方法,这样访问者就能通过IBinder对象与Service进行通信。

  2. 远程服务通信

    在安卓系统中,各个程序都运行在自己的进程中,如果想要完成不同进程间的通信,就需要使用远程服务通信。远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言,其语法格式非常简单,与java中定义接口很类似,但是存在几点差异:

    • AIDL定义接口的源代码必须以.aidl结尾
    • AIDL接口中用到的数据类型,除了基本数据结构及String,List, Map, CharSequence之外,其他类型全都需要导包,即使他们在同一个包中。data/data/cn.luoxin88.musicplayer/qqq.mp3
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:30:36  更:2021-11-20 18:31:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:46:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码