目录结构
AppInfoBean.aidl
package com.traffic;
// Declare any non-default types here with import statements
parcelable AppInfoBean;
IMyAidlInterfarce.aidl
package com.traffic;
// Declare any non-default types here with import statements
import com.tricheer.traffic.AppInfoBean;
interface IMyAidlInterface {
List<AppInfoBean> getNowData();
List<AppInfoBean> getHistoryData(long start,long end);
}
AppInfoBean.java
package com.traffic;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by on 2018/1/24.
*/
public class AppInfoBean implements Parcelable {
private String name;
private String total;
private int uid;
public AppInfoBean() {
}
public AppInfoBean(int uid, String name, String total) {
super();
this.uid = uid;
this.name = name;
this.total = total;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(uid);
parcel.writeString(name);
parcel.writeString(total);
}
// 添加一个静态成员,名为CREATOR,该对象实现了Parcelable.Creator接口
public static final Creator<AppInfoBean> CREATOR
= new Creator<AppInfoBean>() {
@Override
public AppInfoBean createFromParcel(Parcel source) {
// 从Parcel中读取数据,返回Person对象
return new AppInfoBean(source.readInt()
, source.readString()
, source.readString());
}
@Override
public AppInfoBean[] newArray(int size) {
return new AppInfoBean[size];
}
};
}
service.java
@Override
public IBinder onBind(Intent intent) {
return stub;
}
IMyAidlInterface.Stub stub = new IMyAidlInterface.Stub(){
@Override
public List<AppInfoBean> getNowData() throws RemoteException {
return inivData();
}
@Override
public List<AppInfoBean> getHistoryData(long start, long end) throws RemoteException {
return inivDataHistory(start,end);
}
};
客户端
-package com.trafficaidlclient;
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.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.traffic.AppInfoBean;
import com.traffic.IMyAidlInterface;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String TAG ="yyy";
private IMyAidlInterface service;
private Long start;
private Long end;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e(TAG, "oncreat");
init();
}
private void init() {
//bindService
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.traffic", "com.tricheer.TrafficService"));
intent.setAction("com.traffic.service");
bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
Log.e(TAG, "bindService");
}
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
Log.e(TAG, "onServiceDisconnected:" + arg0.getPackageName());
}
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
Log.e(TAG, "onServiceConnected:" + name.getPackageName());
// 获取远程Service的onBinder方法返回的对象代理
service = IMyAidlInterface.Stub.asInterface(binder);
}
};
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(mServiceConnection);
}
}