当前位置: 首页 > wzjs >正文

装饰网站建设的方案ppt专业百度seo排名优化

装饰网站建设的方案ppt,专业百度seo排名优化,传奇手机版网站,网站开发需求确认书通过在应用A中定义AIDL接口实现跨应用数据传输。这是Android标准的IPC通信方式,特别适合一对多的消息推送场景。以下是完整的实现方案: 一、应用A(服务端)实现步骤 1. 定义AIDL接口 创建IDataTransfer.aidl文件: //…

通过在应用A中定义AIDL接口实现跨应用数据传输。这是Android标准的IPC通信方式,特别适合一对多的消息推送场景。以下是完整的实现方案:


一、应用A(服务端)实现步骤

1. 定义AIDL接口

创建IDataTransfer.aidl文件:

// app/src/main/aidl/com/example/appa/IDataTransfer.aidl
package com.example.appa;
import com.example.appa.IDataListener;
interface IDataTransfer {void registerListener(in IDataListener listener);void unregisterListener(in IDataListener listener);void sendData(in String message);
}

创建IDataListener.aidl文件:

// app/src/main/aidl/com/example/appa/IDataListener.aidl
package com.example.appa;
interface IDataListener {void onDataReceived(String data);
}
2. 实现Service
// DataTransferService.java
public class DataTransferService extends Service {private final RemoteCallbackList<IDataListener> mListeners = new RemoteCallbackList<>();private final IDataTransfer.Stub mBinder = new IDataTransfer.Stub() {@Overridepublic void registerListener(IDataListener listener) {mListeners.register(listener);}@Overridepublic void unregisterListener(IDataListener listener) {mListeners.unregister(listener);}@Overridepublic void sendData(String message) {final int N = mListeners.beginBroadcast();for (int i = 0; i < N; i++) {try {mListeners.getBroadcastItem(i).onDataReceived(message);} catch (RemoteException e) {e.printStackTrace();}}mListeners.finishBroadcast();}};@Overridepublic IBinder onBind(Intent intent) {return mBinder;}
}
3. 声明Service(AndroidManifest.xml)

不带权限校验

<serviceandroid:name=".DataTransferService"android:exported="true""><intent-filter><action android:name="com.example.appa.DATA_SERVICE"/></intent-filter>
</service>

带权限校验

<serviceandroid:name=".DataTransferService"android:exported="true"android:permission="com.example.appa.PERMISSION"><intent-filter><action android:name="com.example.appa.DATA_SERVICE"/></intent-filter>
</service><permissionandroid:name="com.example.appa.PERMISSION"android:protectionLevel="normal"/>
4. 发送数据示例
// 在Activity/Fragment中
IDataTransfer mService;ServiceConnection conn = new ServiceConnection() {public void onServiceConnected(ComponentName name, IBinder service) {mService = IDataTransfer.Stub.asInterface(service);}public void onServiceDisconnected(ComponentName name) {mService = null;}
};void sendMessage(String msg) {try {mService.sendData(msg);} catch (RemoteException e) {e.printStackTrace();}
}
5. 开启aidl配置

app 模块的 bulid.gradle 文件添加如下代码:

android {buildFeatures {aidl true}
}

二、应用B(客户端)实现步骤

1. 复制AIDL文件

将应用A的IDataTransfer.aidlIDataListener.aidl文件(包路径保持一致)复制到客户端工程

2. 绑定服务并接收数据
public class ClientActivity extends AppCompatActivity {private IDataTransfer mService;private boolean mIsBound;private ServiceConnection mConnection = new ServiceConnection() {public void onServiceConnected(ComponentName className, IBinder service) {mService = IDataTransfer.Stub.asInterface(service);try {mService.registerListener(mListener);} catch (RemoteException e) {e.printStackTrace();}}public void onServiceDisconnected(ComponentName className) {mService = null;}};private IDataListener mListener = new IDataListener.Stub() {@Overridepublic void onDataReceived(String data) {runOnUiThread(() -> {TextView tv = findViewById(R.id.tv_received);tv.setText("Received: " + data);});}};void bindService() {Intent intent = new Intent("com.example.appa.DATA_SERVICE");intent.setPackage("com.example.appa");bindService(intent, mConnection, Context.BIND_AUTO_CREATE);mIsBound = true;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);bindService();}@Overrideprotected void onDestroy() {if (mIsBound) {unbindService(mConnection);mIsBound = false;}super.onDestroy();}
}
3. 添加权限声明(如果需要)
<uses-permission android:name="com.example.appa.PERMISSION"/>

4. Android 11 以上版本适配

在高版本Android设备上,需要在 AndroidManifest.xml 中声明 queries 元素,指定目标应用的包名或意图过滤器。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><queries><package android:name="com.example.appa" /><intent><action android:name="com.example.appa.DATA_SERVICE" /></intent></queries>
</manifest>

5. 开启aidl配置

app 模块的 bulid.gradle 文件添加如下代码:

android {buildFeatures {aidl true}
}

三、高级配置建议

1. 数据传输优化
// 传递复杂数据时使用Parcelable
parcelable MyData;interface IDataTransfer {void sendComplexData(in MyData data);
}
2. 安全增强
// 服务端校验调用方签名
@Override
public IBinder onBind(Intent intent) {if (!checkCallingSignature()) {return null;}return mBinder;
}private boolean checkCallingSignature() {PackageManager pm = getPackageManager();String packageName = getCallingPackage();PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);// 校验签名是否匹配return true;
}
3. 多进程消息分发优化
// 使用CopyOnWriteArrayList处理并发
private final CopyOnWriteArrayList<IDataListener> mListenerList = new CopyOnWriteArrayList<>();void sendData(String message) {for (IDataListener listener : mListenerList) {try {listener.onDataReceived(message);} catch (RemoteException e) {mListenerList.remove(listener);}}
}

四、工作原理示意图

[App A Service]↑ 绑定
[App B] [App C] ... → 通过AIDL接口注册监听器↓ 数据广播
App A调用sendData → 遍历所有监听器 → 触发各客户端的onDataReceived

五、常见问题解决

  1. ClassCastException

    • 确保所有客户端使用完全相同的AIDL文件(包名+内容)
  2. TransactionTooLargeException

    • 单次传输数据不要超过1MB
    • 大数据建议分片传输或改用文件共享
  3. 服务绑定失败

    • 检查客户端是否声明了正确权限
    • 确认服务端应用的签名与权限配置匹配

以上方案可实现安全可靠的跨应用实时通信,建议配合广播或ContentProvider实现离线消息的持久化存储。

http://www.dtcms.com/wzjs/496026.html

相关文章:

  • 网站建设维护的相关基础知识游戏推广代理
  • 公司网站留言板下载百度app免费下载安装
  • 做网站的软件是哪个seo服务外包客服
  • 网站开发公司气氛最近疫情最新消息
  • 登陆国外的网站要这么做seo外包是什么意思
  • 有没有专门做桑拿的网站呀武汉java培训机构排名榜
  • 网页设计怎么建站点百度入口官网
  • 招聘网站怎么做介绍优化的近义词
  • 经营性网站备案上海百度手机浏览器
  • excel表如何做网站连接提升网站权重的方法
  • 天津建设工程信息网怎么投标系统优化的例子
  • 网站首页设计排版要点网址网域ip地址查询
  • 人跟狗做网站微博搜索引擎优化
  • wordpress怎么修改后台登录地址seo搜索优化邵阳
  • 浏览器不限制访问网站网络网站推广
  • 宝鸡企业网站建设2022最新免费的推广引流软件
  • 自己怎么做返利网站吗网页设计图片
  • 时间线wordpress主题西安抖音seo
  • 遵义住房和城乡建设厅网站seo教学实体培训班
  • 汽车汽配网站建设优化服务
  • 企业做网站找谁网络推广的渠道有哪些
  • 长沙网站建设站长工具查询入口
  • 织梦系统做的网站忘记登录密码百度网站怎么优化排名靠前
  • 新闻网站 内容建设关键词批量调词 软件
  • 手机网站 标题长度站长之家关键词挖掘工具
  • 中国建设银行网站怎么改支付密码是什么电子邮件营销
  • 网站建设怎么设置网址百度用户服务中心官网电话
  • 网站制作多少谷歌推广网站
  • 关键词优化助手seo快速排名工具
  • wordpress邮箱订阅关键词优化报价查询