网站价值 批量查询百度健康

news/2025/9/23 15:50:11/文章来源:
网站价值 批量查询,百度健康,网络培训学院,网站充值平台怎么做参考#xff1a;Android进阶——AIDL详解_android aidl-CSDN博客 AIDL#xff08;Android 接口定义语言#xff09;#xff0c;可以使用它定义客户端与服务端进程间通信#xff08;IPC#xff09;的编程接口#xff0c;在 Android 中#xff0c;进程之间无法共享内存Android进阶——AIDL详解_android aidl-CSDN博客 AIDLAndroid 接口定义语言可以使用它定义客户端与服务端进程间通信IPC的编程接口在 Android 中进程之间无法共享内存用户空间不同进程之间的通信一般使用 AIDL 来处理。 使用流程: 在 .aidl 文件中定义 AIDL 接口并将其添加到应用工程的 src 目录下创建完成之后 rebuil Android SDK 工具会自动生成基于该 .aidl 文件的 IBinder 接口具体的业务对象实现这个接口这个具体的业务对象也是 IBinder 对象当绑定服务的时候会根据实际情况返回具体的通信对象本地还是代理 将客户端绑定到该服务上之后就可以调用 IBinder 中的方法来进行进程间通信IPC实际起作用的并不是AIDL文件而是据此而生成的一个IInterface的实例代码AIDL其实是为了避免我们重复编写代码而出现的一个模板 在实现AIDL的过程中服务端APP和客户端APP中要包含结构完全相同的AIDL接口文件包括AIDL接口所在的包名及包路径要完全一样否则就会报错这是因为客户端需要反序列化服务端中所有和AIDL相关的类如果类的完整路径不一致就无法反序列化成功。 小技巧为了更加方便的创建AIDL文件我们可以新建一个lib工程让客户端APP和服务端APP同时依赖这个lib这样只需要在这个lib工程中添加AIDL文件就可以了 如果不需要跨不同程序使用Binder来创建接口如果不需要处理多线程使用Messenger来处理使用AIDL务必理解绑定服务。 抽象类stub其继承了android.os.Binder、实现IaidlData接口故我们实际需要实现的是Stub抽象类。 package com.yqw.servicedemo;   import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException;   import com.yqw.mylibrary.IMyAidlInterface;   public class MyService extends Service {     public static final String TAG MyService;     public MyService() {     }       Override     public IBinder onBind(Intent intent) {         // Return the communication channel to the service.         return binder;     }       private IMyAidlInterface.Stub binder new IMyAidlInterface.Stub() {         Override         public int borrowBook(String bookName) throws RemoteException {             //TODO 实现一系列 借书 的逻辑后返回结果码比如:0为失败1为成功             return 1;         }           Override         public int returnBook(String bookName) throws RemoteException {             //TODO 实现一系列 还书 的逻辑后返回结果码比如:0为失败1为成功             return 1;         }     }; } ———————————————— 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。                          原文链接https://blog.csdn.net/you943047219/article/details/109493490 package com.yqw.aidldemo;   import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.view.View; import android.widget.Toast;   import com.yqw.mylibrary.IMyAidlInterface;   import androidx.appcompat.app.AppCompatActivity;   public class MainActivity extends AppCompatActivity {     private String TAG MainActivity;     private IMyAidlInterface iMyAidlInterface;     private boolean isConnected false;//是否连接服务       Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);     }       Override     protected void onStart() {         super.onStart();         if (!isConnected) {             mBindService();         }     }       Override     protected void onStop() {         super.onStop();         if (isConnected) {             unbindService(mServiceConnection);             isConnected false;         }     }       private void mBindService() {         Intent intent new Intent();         intent.setAction(com.yqw.servicedemo.MyService);         intent.setPackage(com.yqw.servicedemo);           bindService(intent, mServiceConnection, BIND_AUTO_CREATE);     }       private final ServiceConnection mServiceConnection new ServiceConnection() {         Override         public void onServiceConnected(ComponentName componentName, IBinder iBinder) {             Log.d(TAG, onServiceConnected);             //获得 aidl定义的接口持有类             iMyAidlInterface IMyAidlInterface.Stub.asInterface(iBinder);             isConnected true;         }           Override         public void onServiceDisconnected(ComponentName componentName) {             Log.d(TAG, onServiceDisconnected);             isConnected false;         }     };       private void showToast(String str) {         Toast.makeText(this, str, Toast.LENGTH_SHORT).show();     }       public void borrowBook(View view) {         if (!isConnected) {             showToast(未连接服务);             return;         }         try {             int resultCode iMyAidlInterface.borrowBook(流浪地球);             showToast(resultCode 1 ? 借书成功 : 借书失败);         } catch (RemoteException e) {             e.printStackTrace();         }     }       public void returnBook(View view) {         if (!isConnected) {             showToast(未连接服务);             return;         }         try {             int resultCode iMyAidlInterface.returnBook(流浪地球);             showToast(resultCode 1 ? 还书成功 : 还书失败);         } catch (RemoteException e) {             e.printStackTrace();         }     } } AIDL支持实体类但必须是实现了Parcelable接口支持序列化。 // Book.aidl package com.yqw.mylibrary; parcelable Book; package com.yqw.mylibrary;   public class Book {     String name;     int num;       public Book(String name, int num) {         this.name name;         this.num num;     }       public String getName() {         return name;     }       public void setName(String name) {         this.name name;     }       public int getNum() {         return num;     }       public void setNum(int num) {         this.num num;     } } 然后实现 Parcelable接口按AltEnter自动补充好需要的代码 package com.yqw.mylibrary;   import android.os.Parcel; import android.os.Parcelable;   public class Book implements Parcelable {     String name;     int num;       public Book(String name, int num) {         this.name name;         this.num num;     }       protected Book(Parcel in) {         name in.readString();         num in.readInt();     }       public static final CreatorBook CREATOR new CreatorBook() {         Override         public Book createFromParcel(Parcel in) {             return new Book(in);         }           Override         public Book[] newArray(int size) {             return new Book[size];         }     };       public String getName() {         return name;     }       public void setName(String name) {         this.name name;     }       public int getNum() {         return num;     }       public void setNum(int num) {         this.num num;     }       Override     public int describeContents() {         return 0;     }       Override     public void writeToParcel(Parcel dest, int flags) {         dest.writeString(name);         dest.writeInt(num);     } } // IMyAidlInterface.aidl package com.yqw.mylibrary; import com.yqw.mylibrary.Book;   interface IMyAidlInterface {       int borrowBook(String bookName);     int returnBook(String bookName);       ListBook getBookList();   } 然后调用 public void getBooksNum(View view) {         checkConnected();         try {             int booksNum iMyAidlInterface.getBookList().size();             showToast(剩余图书数量 booksNum);         } catch (RemoteException e) {             e.printStackTrace();         }     }

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

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

相关文章

Qt - 音频采集程序

我们将创建一个简单的Qt应用程序,用于采集麦克风的音频数据。我们将使用QAudioInput来捕获音频,并将捕获的原始PCM数据保存到文件中。同时,我们也会在界面上显示一些基本的控制按钮(开始、停止)和状态信息。 步骤…

923-

9.23模拟赛坐牢一个小时就去写其他题了 T1 DP优化想到了初始的DP状态,但是由于复杂度的 \(O(n^5)\)否掉了自己的做法 没有想到好的办法规避这种情况,唯一的方法就是 在时间充足的情况下尽可能地把一种想法想下去 第…

基于 AI 网关提升大模型应用可用性的实践

阿里云 AI 网关提供了多来源 LLM 服务的代理功能,不仅可以通过简单易用的配置对 LLM 服务进行代理,同时提供了丰富的 LLM 服务入口流量治理功能,提高 LLM 服务的可观测性和可用性。作者:桂楚 随着 LLM 服务广泛部署…

绝了!TaskMatrix Pro - 谷歌、火狐浏览器任务管理插件,四象限矩阵让拖延症瞬间消失 - 开源免费

在当今快节奏的工作环境中,如何高效管理任务和时间已成为每个职场人士必须面对的挑战。传统的任务管理方法往往效率低下,难以应对复杂多变的工作需求。今天,我们将深入探讨一款基于艾森豪威尔矩阵原理的智能任务管理…

荣成市城乡建设局网站wordpress 菜单栏高亮

常用事务码 SE11 SE14 SE16 SE16N SM30 SE11:查看数据库表/修改表中字段数量_类型/查看表中数据/设置表为可维护或不可维护 SE14:查看数据库表的创建日期创建用户名/查看表中字段/删除表中全部数据(只能全部删) SE16:查看数据库表/对可维护数据库表进行数据维护/SE16通过调试…

中山市文联灯饰有限公司网站谁做的宠物网站设计说明书

9.自定义hook函数 什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。 自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂。 10.toRef 作用:创建一个 ref 对象,其…

科技未来网站建设pinfinity wordpress

说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢&am…

营销型网站建设作用网站建设课程设计报告图文

一、引言 我昨天写了《安卓应用开发学习:获取经纬度及地理位置描述信息》日志,今天再接再厉,记录一下跟着《Android App 开发进阶与项目实战》一书,实现获取导航卫星信息,并在手机上显示的功能的情况。先上实现后的在…

环保类网站建设电商网站建设成本

对于本题 我感觉还是链表做起来舒服 数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现 但是链表搞了一次就搞好了 香的嘞~ 下面是代码 用单链表实现循环 再去删除要删除的人 5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去…

网站建设 广州佛山市北区小型网页设计培训

前言 最近工作比较忙,没怎么记录东西了。Android的Handler重要性不必赘述,之前也写过几篇关于hanlder的文章了: Handler有多深?连环二十七问Android多线程:深入分析 Handler机制源码(二) And…

洛谷P10288 [GESP样题 八级] 区间

原题 题目描述 小杨有一个长度为 \(n\) 的正整数序列 \(A\)。 小杨有 \(q\) 次询问。第 \(i\) 次(\(1\le i\le q\))询问时,小杨会给出 \(l_i,r_i,x_i\),请你求出 \(x_i\) 在 \(A_{l_i}, A_{l_i+1}, \dots A_{r_i}\…

百度如何搜索网址网站推广优化趋势

1. nuScenes 数据集 1.1 概述 nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。 nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 …

AI 时代下,开发流程的重塑:从“代码先行”到“文档驱动”

本文探讨了AI编程工具在提升效率的同时,因缺乏顶层设计而导致项目混乱的困境。并提出一种“文档驱动”的AI原生开发新范式,强调高质量、结构化的文档是驾驭AI编码,实现高质量交付的关键。文章标题 引言:AI 编程工具…

P13617 [ICPC 2025 APC] Bit Counting Sequenc

题意:给定长度 $n \leq 5 \times 10^5$ 的 popcount 序列 $\{a_i\}$,求其对应的原序列。思路:观察发现 popcount 序列具有倍增构造性质,将原序列 $[0,2^k - 1]$ 的第 $k$ 位改成 $1$ 可得到 $[2^k,2^{k + 1} - 1]$…

perl -MCPAN -e install GD;

001、 Package gdlib was not found in the pkg-config search path.Perhaps you should add the directory containing `gdlib.pcto the PKG_CONFIG_PATH environment variableNo package gdlib found

Day 02 HTML的基础 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何在网站添加代码大气精美网站设计工作室织梦模板

【芯片DFX】万字长文带你搞懂JTAG的门门道道【芯片DFX】ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析

网络建站的费用微网站开发一般费用多少钱

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

什么网站专做店铺wordpress 一栏主题

首先已经创建好了 Vue 框架,安装好了 node.js。 没有完成的可按照此博客搭建:搭建Vue项目 之后打开终端,使用命令。 1、命令安装 axios 和 vue-axios npm install axios --save npm install vue-axios --save2、package.json 查看版本 在 p…