Web端
定义接口MyAdil.aidl
package com.service_aidl_web;
interface MyAidl{
int count(int num1,int num2);
String say();
}
MyService.java
package com.service_aidl_web.service;
import com.service_aidl_web.MyAidl;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return new MyBinder();
}
private class MyBinder extends MyAidl.Stub{
@Override
public int count(int num1, int num2) throws RemoteException {
// TODO Auto-generated method stub
return num1+num2;
}
@Override
public String say() throws RemoteException {
// TODO Auto-generated method stub
return "您好";
}
}
}
复制gen下的com.service_aidl_web/MyAidl.java连包一起复制到客户端src下
Client端调用
MainActivity.java
package com.service_aidl_Client;
import com.service_aidl_web.MyAidl;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private Button button;
private MyAidl myAidl;
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
myAidl=null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
myAidl=MyAidl.Stub.asInterface(service);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
Intent intent = new Intent("com.service_web_01");
bindService(intent, connection, Context.BIND_AUTO_CREATE);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.button1) {
try {
String str = myAidl.say();
int num1=2,num2=3;
int count=myAidl.count(num1,num2);
Toast.makeText(this, "查询的结果:" + str+"------"+num1+"+"+num2+"的计算结果:"+count, Toast.LENGTH_SHORT).show();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
Android AIDL通信之对象与普通数据
Android aidl
android aidl 本地和aidl通信,远端和aidl android aidl 本地和aidl通信,远端和aidl
android aidl跨进程通信例子,简单明了
Android AIDL Binder 实现与详解。此资源实现了 Android AIDL 通信,自定义 AIDL 数据类型。同时演示了定向 Tag 『inout in out』的区别。并且配有博文详细解释相关知识点以及需要注意的细节。
andorid 不同进程间的通信, uses the aidl to comple the demo,hope you can learn ,and give me you idear .
Android aidl 实现进程间通信(IPC)
使用AIDL实现Android进程间通信,Demo包含Service,Client代码。
Android aidl 进程通信,本人学习demo,讲诉完整的aidl实现流程。...............
Android使用AIDL实现跨进程的通信.rar
Android AIDL跨进程通信 的demo,包括两部分,两个项目
android通过aidl传递Parcelable对象
Android跨进程使用aidl通信。demo中包含两个apk,服务端和客户端。
为何要开启多进程?主要有两种情况: 一、一个应用由于自身需要采用多进程模式来实现。比如播放器之类,如果仅仅在service中运行会影响主线程的响应速度,很可能会造成ANR;...2、两个进程之间使用AIDL进行通信
Android多进程通讯AIDL传递Parcelable对象
Android-AIDL,demo,代码简洁易懂,希望对大家有帮助,博客地址https://blog.csdn.net/u010775335/article/details/105541176
Android aidl跨进程通信
Android使用AIDL实现进程间通信