Android aidl的简单使用

一.服务端

1.创建aidl文件,然后记得build下生成java文件

package com.example.aidlservice31;// Declare any non-default types here with import statementsinterface IMyAidlServer {// 接收一个字符串参数void setData(String value);// 返回一个字符串String getData();
}

2.创建远程MyService.class

class MyService : Service() {private val mBinder by lazy { MyBinder() }override fun onBind(intent: Intent): IBinder {return mBinder}inner class MyBinder : IMyAidlServer.Stub() {private var mData: String = "李小龙"override fun setData(value: String) {Log.e("yjj", "客户端发来的数据== $value")mData = value}override fun getData() = mData+"返回的数据"}
}

3.在AndroidManifest配置MyService

        <serviceandroid:name=".MyService"//远程可访问android:exported="true"//开启远端进程android:process=":remote"><intent-filter><category android:name="android.intent.category.DEFAULT" />//客户端通过action绑定MyService<action android:name="com.example.aidlservice31.MyService" /></intent-filter></service>

二、客户端

1.复制服务端aidl文件夹,啥也别改,然后build下,自动生成java文件。

2.绑定服务,传输数据

class MainActivity : AppCompatActivity() {private var mServer: IMyAidlServer? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initView()}private var mNumber = 0private fun initView() {val tvGetDataValue: TextView = findViewById(R.id.tvGetDataValue)//绑定服务器findViewById<TextView>(R.id.tvBindService).setOnClickListener {setConnection()}//传递数据给服务端findViewById<TextView>(R.id.tvSetData).setOnClickListener {mNumber++mServer?.data = mNumber.toString()Log.e("yjj", "setData == " + mServer?.data)}//获取服务端数据findViewById<TextView>(R.id.tvGetData).setOnClickListener {Log.e("yjj", "getData == " + mServer?.data)mServer?.data.let {tvGetDataValue.text = it}Toast.makeText(this,tvGetDataValue.text,Toast.LENGTH_LONG).show()}}private val mMyServiceConnection = object : ServiceConnection {override fun onServiceConnected(name: ComponentName?, remoteService: IBinder?) {Log.e("yjj", "绑定远程服务成功!")mServer = IMyAidlServer.Stub.asInterface(remoteService)}override fun onServiceDisconnected(name: ComponentName?) {mServer = null}}private fun setConnection() {try {val intent = Intent()// AIDLServer 项目的包名(applicationId)// AIDLServer 项目中注册的服务的全路径intent.component =ComponentName("com.example.aidlservice31", "com.example.aidlservice31.MyService")intent.flags = Intent.FLAG_ACTIVITY_NEW_TASKvar issuccess = bindService(intent, mMyServiceConnection, Context.BIND_AUTO_CREATE)Log.e("yjj", "开始绑定服务器issuccess=$issuccess")} catch (e: SecurityException) {e.printStackTrace()}}override fun onDestroy() {super.onDestroy()unbindService(mMyServiceConnection)}
}

好像有些手机是不行的,比如华为荣耀v30。不行的话,换个手机试试吧。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法之贪心: LeetCode 122. 买卖股票的最佳时机II (Typescript版)

买卖股票的最佳时机II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 …

mybatis配置文件中配置类型别名的方式

在MyBatis配置文件&#xff08;通常是mybatis-config.xml&#xff09;中&#xff0c;可以通过以下方式配置类型别名&#xff1a; 1. 使用typeAliases元素配置全局类型别名 <configuration> <typeAliases> <typeAlias alias"YourAlias" type"…

简单订单和支付业务的相关流程

1、订单创建、支付及订单处理流程图 2、创建HTTP客户端工具类 Slf4j public class HttpclientUtil {//类中定义了一个私有静态成员变量instance&#xff0c;并且将其初始化为HttpclientUtil类的一个实例&#xff0c;用于实现单例模式。private static HttpclientUtil instance…

单片机学习6——定时器/计数功能的概念

在8051单片机中有两个定时器/计数器&#xff0c;分别是定时器/计数器0和定时器/计数器1。 T/C0: 定时器/计数器0 T/C1: 定时器/计数器1 T0: 定时器0 T1: 定时器1 C0: 计数器0 C1: 计数器1 如果是对内部振荡源12分频的脉冲信号进行计数&#xff0c;对每个机器周期计数&am…

基于springboot+vue的学生宿舍管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

时间序列预测 — LSTM实现单变量风电滚动预测(Keras)

目录 1 数据处理 1.1 数据集简介 1.2 数据集处理 2 模型训练与预测 2.1 模型训练 2.2 模型滚动预测 2.3 结果可视化 1 数据处理 1.1 数据集简介 实验数据集采用数据集5&#xff1a;风电机组运行数据集&#xff08;下载链接&#xff09;&#xff0c;包括风速、风向、温…

JC/T 456-2015 陶瓷马赛克检测

陶瓷马赛克是指可拼接贴成联的或可单独铺贴的小规格陶瓷砖&#xff0c;可用于墙面和地面起保护及装饰作用。 JC/T 456-2015 陶瓷马赛克测试&#xff1a; 测试项目 测试方法 尺寸允许偏差 JC/T 456 外观质量 JC/T 456 吸水率 GB/T 3810.3 耐磨性 GB/T 3810.6 GB/T 381…

编程语言发展史:JavaScript语言的发展和应用

预计更新 第一部分&#xff1a;早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分&#xff1a;主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…

华为OD机试 - 游戏分组(Java JS Python C)

题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的评分总和。 现在…

使用Rust开发小游戏

本文是对 使用 Rust 开发一个微型游戏【已完结】[1]的学习与记录. cargo new flappy 在Cargo.toml的[dependencies]下方增加: bracket-lib "~0.8.7" main.rs中: use bracket_lib::prelude::*;struct State {}impl GameState for State { fn tick(&mut self,…

每日一题--相交链表

离思五首-元稹 曾经沧海难为水&#xff0c;除却巫山不是云。 取次花丛懒回顾&#xff0c;半缘修道半缘君。 目录 题目描述&#xff1a; 思路分析&#xff1a; 方法及时间复杂度&#xff1a; 法一 计算链表长度(暴力解法) 法二 栈 法三 哈希集合 法四 map或unordered_map…

【面经八股】搜广推方向:常见面试题(二)

【面经&八股】搜广推方向:常见面试题(二) 文章目录 【面经&八股】搜广推方向:常见面试题(二)1. FTRL 是什么?(Follow The Regularized Leader)2. 梯度下降方法3. 推荐系统中常见的Embedding方法有哪些?4. Embedding与推荐系统有哪些结合5. FM 和 FFM6. FNN7. 深…

一文学会使用React-Router v6

文章目录 基本格式createBrowserRouterType Declarationroutesbasenamefuture and window ... 省略 <RouterProvider>fall上述文本提到 createBrowserRouter 函数的一个特性&#xff1a;在非服务器端渲染应用程序时&#xff0c;当它挂载时会初始化所有匹配的路由加载器。…

解决hbuilder使用android studio模拟器不能热更新

hbuilder使用android studio模拟器编&#xff0c;在编写代码时&#xff0c;不能热更新&#xff0c;总是需要重启虚拟机中的程序&#xff0c;hbuilderx的版本是3.1.22&#xff0c;android studio的版本是4.2.2 同时在hbuilderx中出现如下报错信息&#xff1a; 报错信息&#x…

HuggingFace学习笔记--AutoModel的使用

1--AutoModel的使用 官方文档 AutoModel 用于加载模型&#xff1b; 1-1--简单Demo 测试代码&#xff1a; from transformers import AutoTokenizer, AutoModelif __name__ "__main__":checkpoint "distilbert-base-uncased-finetuned-sst-2-english"t…

java进阶---多态

多态的概述 什么是多态 同一个对象,在不同时刻表现出来的不同形态 多态的前提 要有继承或实现关系要有方法的重写要有父类引用指向子类对象 多态的具体实现 对象的多态是多态的核心和重点 规则: 一个对象的编译类型与运行类型可以不一致编译类型在定义对象时,就确定了,…

三数之和问题

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…

【笔记 Pytorch 08】深度学习模板 (未完)

文章目录 一、声明二、工程结构三、文件内容main.pymodel.pydataset.pyutils.py 四、问题汇总 一、声明 非常感谢这些资料的作者&#xff1a; 【参考1】、【PyTorch速成教程 (by Sung Kim)】 二、工程结构 ├── main.py&#xff1a;实现训练 (train) 、验证(validation)和…

python pip安装第三方包时报错 error: Microsoft Visual C++ 14.0 or greater is required.

文章目录 1.问题2.原因3.解决办法 1.问题 pip install 的时候报错一大堆&#xff0c;其中有这么一段话 &#x1f447; error: Microsoft Visual C 14.0 or greater is required. Get it with "Microsoft C Build Tools": https://visualstudio.microsoft.com/visua…

rdf-file:读和写

<dependency><groupId>com.alipay.rdf.file</groupId><artifactId>rdf-file-core</artifactId><version>2.2.10</version> </dependency>一&#xff1a;读 一&#xff1a;写 写文件之正常写 协议布局模板 使用内置的布局文…