AIDL 传递List<javaBean> 自定义泛型

目录结构
这里写图片描述


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);
    }


}

猜你喜欢

转载自blog.csdn.net/weixin_38148680/article/details/79192535