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

相关文章

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Linux命令(11):系统信息查看命令

系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv

O(n)时间内对[0..n^-1]之间的n个数排序

题目 如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序 思路 把整数转换为n进制再排序,每个数有两位,每位的取值范围是[0..n-1],再进行基数排序 代码 #include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A,