Android AIDL:跨进程调用Service (AIDL Service)

本文详细介绍了如何使用AIDL进行Android跨进程Service通信,包括创建AIDL文件、绑定Service并通信的步骤。通过AIDL,开发者可以在不同应用间安全地传递数据并调用Service的方法。
摘要由CSDN通过智能技术生成

public class MainActivity extends AppCompatActivity implements OnClickListener {

private Intent mServiceIntent;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.btn_start_Service).setOnClickListener(this);

findViewById(R.id.btn_stop_Service).setOnClickListener(this);

mServiceIntent = new Intent();

mServiceIntent.setComponent(

new ComponentName(“com.zhuanghongji.startservicefromanotherapp”,

“com.zhuanghongji.startservicefromanotherapp.AppService”));

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_start_Service:

startService(mServiceIntent);

break;

case R.id.btn_stop_Service:

stopService(mServiceIntent);

break;

}

}

}

分别点击两个按钮同样可以看到输出的日志:

这里写图片描述

我们也可以在Service中重写 onStartCommand() 来接收其他应用传递过来的数据。

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

return super.onStartCommand(intent, flags, startId);

// 做你想做的事

}

三、跨应用绑定Service

1. 创建AIDL文件

右键app包名新建.aidl文件:

  • 自动生成的代码如图中右边所示(IAppServiceRemoteBinder.aidl)。

  • 同时也自动新建了个aidl文件夹,.aidl文件就是在这个文件夹下(图中左边)。

这里写图片描述

Build->Make Project 发现在…debug目录下自动生成了对应的java接口文件

这里写图片描述

该文件代码如下:

/*

  • This file is auto-generated. DO NOT MODIFY.

  • Original file: F:\AndroidG\StartServiceFromAnotherApp\app\src\main\aidl\com\zhuanghongji\startservicefromanotherapp\IAppServiceRemoteBinder.aidl

*/

package com.zhuanghongji.startservicefromanotherapp;

// Declare any non-default types here with import statements

public interface IAppServiceRemoteBinder extends android.os.IInterface {

/**

  • Local-side IPC implementation stub class.

*/

public static abstract class Stub extends android.os.Binder implements com.zhuanghongji.startservicefromanotherapp.IAppServiceRemoteBinder {

private static final java.lang.String DESCRIPTOR = “com.zhuanghongji.startservicefromanotherapp.IAppServiceRemoteBinder”;

/**

  • Construct the stub at attach it to the interface.

*/

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值