service与activtiy之间的信息交互

2024-01-11 04:48

本文主要是介绍service与activtiy之间的信息交互,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

service服务,一种后台运行的无界面耗时操作。

生命周期:oncreate(),onStartCommand(),onBind(),unbindService(),onDestroy()

启动有两种模式

startService()和bindService(),两种模式都能实现信息的交互,但第一种实现起来不容易,而第二种则是可以较容易实现信息交互。

1、首先在service类中定义交互接口,然后再定义一个交互类继承Binder,实现交互接口,最后将交互对象作为返回值在onbinder中返回

其主要方法如下:(下面对象为播放器对象,可以换其他实现)

//交互接口

public interface IBCount{      
void setCount(MediaPlayer MediaPlayer);
public MediaPlayer getCount();
}

//交互类

public class ServiceBindler extends Binder implements IBCount{
@Override
public void setCount(MediaPlayer MediaPlayer) {

mMediaPlayer = MediaPlayer;
}

@Override
public MediaPlayer getCount() {
return mMediaPlayer;
}

}

//将交互对像作为返回值返回

@Override
public IBinder onBind(Intent arg0) {
return mServiceBindler;
}

2、在activity中声明交互接口,再调用ServiceConnection类对交互接口进行赋值(利用onServiceConnected()中IBinder),最后在oncreate()方法中

调用bindService()

//在类中声明

private IBCount mCount;

//ServiceConnection类对交互接口进行赋值

private ServiceConnection mServerCount = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mCount = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mCount = (IBCount) service;
}
};

//调用bindService()

Intent intent = new Intent(this, MyFirstServer.class);
bindService(intent, mServerCount, BIND_AUTO_CREATE);

这样即可得到值进行下面的操作了

这篇关于service与activtiy之间的信息交互的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593208

相关文章

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python实现PDF与多种图片格式之间互转(PNG, JPG, BMP, EMF, SVG)

《Python实现PDF与多种图片格式之间互转(PNG,JPG,BMP,EMF,SVG)》PDF和图片是我们日常生活和工作中常用的文件格式,有时候,我们可能需要将PDF和图片进行格式互转来满足... 目录一、介绍二、安装python库三、Python实现多种图片格式转PDF1、单张图片转换为PDF2、多张图

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为