Android跨进程通信之广播

        广播是Android四大组件之一,在 Android 中,广播是一种用于在应用程序内或应用程序之间传递消息的机制。它允许应用程序发送系统事件、应用程序事件或自定义事件给其他应用程序或组件。广播可以用于在应用程序的不同部分之间通信,也可以用于与其他应用程序进行交互。

        发送广播通常使用 Intent 对象来表示广播的意图和内容,接收广播则需要注册广播接收器(BroadcastReceiver)。广播接收器可以通过在 AndroidManifest.xml 文件中声明静态接收器,或者通过在代码中动态注册接收器来接收广播。具体稍后会出一篇详细关于广播的文章。

        下面是使用的动态注册的方法。场景,服务发送数据到活动。

        发送端

        自定义广播,将要发送的数据通过putExtra再通过sendBroadcast发送,mContext为发送端的上下文。

        // 发送广播
        Intent intent = new Intent("com.example.ACTION_TOUCH_EVENT");
        intent.putExtra("x", event.getX());
        intent.putExtra("y", event.getY());
        intent.putExtra("pressure", event.getPressure());
        if(mContext!=null)
            mContext.sendBroadcast(intent);
        else
            Log.d(TAG, "mContext is null");

        接收端

        创建一个广播接收器,重写onReceive通过Intent获得发送过来的数据

private BroadcastReceiver myReceiver;

        // 创建广播接收器
        myReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // 处理接收到的广播
                if (intent.getAction() != null && intent.getAction().equals("com.example.ACTION_TOUCH_EVENT")) {
                    float x = intent.getFloatExtra("x", 0);
                    float y = intent.getFloatExtra("y", 0);
                    float pressure = intent.getFloatExtra("pressure", 0);

                    // 在这里进行你需要的操作,例如更新UI等
                    Log.d(TAG, "Received touch event. X: " + x + ", Y: " + y + ", Pressure: " + pressure);
                    // 在 UI 线程上更新用户界面
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // 执行与用户界面相关的更新操作,例如更新文本、绘制图形等
                            String data =  "X: " + String.valueOf(x) + ", Y: " + String.valueOf(y) + ", Pressure: " + String.valueOf(pressure);
                            txt_signature_data.setText(data);
                            txt_signature_data.setTextColor(Color.BLACK);
                        }
                    });
                }
            }
        };
         // 注册广播接收器
        IntentFilter filter = new IntentFilter("com.example.ACTION_TOUCH_EVENT");
        registerReceiver(myReceiver, filter);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/597135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac电脑如何安装python及环境搭建

(1)进入官网:Download Python | Python.org,根据自己电脑选择python (2)这里我选择的是mac,点击:macos,选择最近版本并点击进入 (3)选择mac版本: (4)点击就可以进入下载: (5)下载好之…

网站防御XSS攻击的有效策略与实施步骤

随着互联网应用的普及与发展,网站安全已成为众多企业关注的焦点,而XSS(Cross-Site Scripting)攻击作为最常见的Web安全漏洞之一,对用户数据安全构成严重威胁。本文将详细介绍网站如何有效防御XSS攻击,并提供…

Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能

需求描述: 由于某些情况下当查询过滤参数过大时,执行sql由于参数过大而报错,此时 需要使用临时表的方式,即 当参数超过某个阀值(如 1000,可调整)新增一张临时表,将原表 与 该临时表进…

2024精武杯部分复现

首先是计算机部分,这里是题目 做完才发现其实很多东西在火眼里面已经有更快的捷径了,但是自己当时没发现,还去傻傻的开虚拟机去找,说到底,还是对取证软件的理解不够,也不怎么会用。不废话了,直接…

怎么给word文件名批量替换部分文字?word设置批量替换文字教程

批量替换Word文件名中的几个字,对于经常处理大量文件的人来说,是一项非常实用的技能。以下是一个详细的步骤指南,帮助你快速完成这项任务。 首先,你需要准备一个可以批量重命名文件的工具。市面上有很多这样的工具可供选择&#x…

人工智能的发展将如何重塑网络安全

微信搜索关注公众号网络研究观,获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年,当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年,当时数学家艾伦图灵发表了题为“计算机…

密码学《图解密码技术》 记录学习 第十四章

目录 十四章 14.1 本章学习的内容 14.2 什么是 SSL/TLS 14.2.1 Alice 在 Bob 书店买书 14.2.2 客户端与服务器 14.2.3 АSSL/TLS 承载HTTP 14.2.4 SSL/TLS的工作 14.2.5 SSL/TLS也可以保护其他的协议 14.2.6 密码套件 14.2.7 SSL 与 TLS 的区别 14.3 使用 SSL/TLS 进…

产业观察:电机驱动成为人形机器人的动力核心

前不久,波士顿动力发布一则“再见,液压Atlas”视频,宣告其著名的液压驱动双足人形机器人Atlas正式退役。这则视频引起全球所有Atlas粉丝的高度关注。然而紧接着,波士顿动力便又推出了全部由电机驱动的新一代Atlas机器人&#xff0…

【Git】【MacOS】Github从创建与生成SSH公钥

创建账号 这一步不过多赘述,根据自己的邮箱新创建一个账号 配置SSH公钥 本人是macOS系统,首先从终端输入 cd ~/.ssh进入.ssh目录,然后通过 ls查看有没有一个叫做id_rsa.pub的文件 本人之前生成过SSH公钥,如果没有的话,通过 ssh-keygen -t…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC(Model-View-Controller)设计模式,各个目录的作用如下: model(模型): 位于 /usr/lib/lua/luci/model 下,存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

cmd输入mysql -u root -p无法启动

问题分析:cmd输入mysql -u root -p无法启动 解决方法:配置系统环境变量 1.找到mysql安装文件下的bin文件:(复制改文件地址,如下图所示) 2.电脑桌面下方直接搜索环境变量并进入,如下图 3.点击环境变量&a…

读取打包到JAR中的文件:常见问题与解决方案(文件在但是报错not find)

读取打包到JAR中的文件:常见问题与解决方案 喝淡酒的时候,宜读李清照;喝甜酒时,宜读柳永;喝烈酒则大歌东坡词。其他如辛弃疾,应饮高梁小口;读放翁,应大口喝大曲;读李后主…

Python数据清洗与可视化实践:国际旅游收入数据分析

文章目录 概要整体流程名词解释NumPyPandasMatplotlibre 技术细节数据清洗可视化 小结 概要 在本篇博客中,我们将通过一个实际的案例,演示如何使用Python进行数据清洗和可视化,以分析国际旅游收入数据。我们将使用Python中的Pandas库来进行数…

04-25 周四 FastBuild重构实践-TLS、全局捕获异常、一键配置

04-25 周四 FastBuild重构实践 时间版本修改人描述04-25V0.1宋全恒新建文档2024年5月6日14:33:16V1.0宋全恒完成文档撰写 简介 由于 04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)描述了重新部署一个FastBuild实例的过程,通过阅读这个&…

线性表的概念与结构,以及顺序表和链表的简单概念

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线…

JS hook cookie

JS hook cookie cookie 的值是V,v是动态变化的 可以看到D中生成了cookie的值n 尝试使用RPC定位到cookie。 替换内容,下断点。 将写好的RPC代码直接插入 加入代码,file.virjar.com/sekiro_web_client.js?_123 这个地址是在前端创建客户端…

开源模型应用落地-CodeQwen模型小试-小试牛刀(一)

一、前言 代码专家模型是基于人工智能的先进技术,它能够自动分析和理解大量的代码库,并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议,帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…

【网络知识】光猫、路由器 和 交换机 的作用和区别?

数字信号:是指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。 模拟信号:模拟信号是指用连续变化的物…

学习c#第26天 面向对象基础之类与对象

1.类 1.什么是类? 俗话说,“物以类聚,人以群分”。意思是同类的东西经常聚在一起,志同道合 的人相聚成群。前者说物,后者说人。这里以物来进行举例说明[见图]: 水果超市,所有同类的水果摆放在一起&#xf…

【机器学习与实现】线性回归分析

目录 一、相关和回归的概念(一)变量间的关系(二)Pearson(皮尔逊)相关系数 二、线性回归的概念和方程(一)回归分析概述(二)线性回归方程 三、线性回归模型的损…
最新文章