白羽
2019-01-03
来源 :网络
阅读 803
评论 0
摘要:本文将带你了解Android应用开发Android AIDL实现两个APP间的跨进程通信实例,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android AIDL实现两个APP间的跨进程通信实例,希望本文对大家学Android有所帮助。
本文为大家分享了Android AIDL实现两个APP间的跨进程通信实例,供大家参考,具体内容如下
1 Service端创建
首先需要创建一个Android工程然后创建AIDL文件,创建AIDL文件主要为了生成继承了Binder的Stub类,以便应用Binder进行进程间通信
servier端结构如下
AIDL代码如下
// IBookManager.aidl
package com.example.bookserver.aidl;
// Declare any non-default types here with import statements
import com.example.bookserver.aidl.Book;
interface IBookManager {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
double aDouble, String aString);
List<Book> getBook();
boolean addBook(in Book book);
}
package com.example.bookserver.aidl;
parcelable Book;
之后创建一个实现了Parcelable的Book.java类用来传递数据
package com.example.bookserver.aidl;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by SAMSUNG on 2016-09-07.
*/
public class Book implements Parcelable {
private int id;
private String name ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeString(this.name);
}
public Book() {
}
protected Book(Parcel in) {
this.id = in.readInt();
this.name = in.readString();
}
public static final Parcelable.Creator<Book> CREATOR = new Parcelable.Creator<Book>() {
@Override
public Book createFromParcel(Parcel source) {
return new Book(source);
}
@Override
public Book[] newArray(int size) {
return new Book[size];
}
};
}
最后我们来写一个Service用于客户端绑定
package com.example.bookserver.service;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import com.example.bookserver.aidl.Book;
import com.example.bookserver.aidl.IBookManager;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class BookService extends Service {
private CopyOnWriteArrayList<Book> boookList = new CopyOnWriteArrayList<Book>();
public BookService() {
}
Binder binder = new IBookManager.Stub(){
@Override
public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {
}
@Override
public List<Book> getBook() throws RemoteException {
return boookList;
}
@Override
public boolean addBook(Book book) throws RemoteException {
return boookList.add(book);
}
};
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public void onCreate() {
super.onCreate();
Book book = new Book();
book.setId(12345);
book.setName("Book 1");
boookList.add(book);
}
}
这样Server端就搞定了,接下来就该进行Client端的代码编写了
2 Client端
Client端结构如下
首先我们要讲AndroidStudio 通过AIDL生成的Binder导入到Client中并将Book.java也导入到Client中
然后写进行Service的绑定
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
喜欢 | 2
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号