zoukankan      html  css  js  c++  java
  • Android开发 AIDL使用自定义对象作参数或返回值

    http://www.pocketdigi.com/20121129/952.html

    默认,AIDL支持对象作参数,但需要该对象实现Parcelable接口,且aidl文件应该是该类在同一包下,需要单独给该类定义一个aidl文件.
    定义模型类:
    EnglishItem.java:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    
    package com.pocketdigi.english.aidl;
     
    import android.os.Parcel;
    import android.os.Parcelable;
     
    import com.j256.ormlite.field.DatabaseField;
    import com.j256.ormlite.table.DatabaseTable;
    import com.pocketdigi.english.utils.Constants;
    import com.pocketdigi.english.utils.Des;
     
    @DatabaseTable(tableName = "listenlist")
    public class EnglishItem implements Parcelable {
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = -1756522544697525757L;
    	@DatabaseField(id = true)
    	private int id;
    	@DatabaseField
    	private String title;
    	@DatabaseField
    	private String category;
    	@DatabaseField
    	private String mp3url;
    	@DatabaseField
    	private String lrcurl;
    	@DatabaseField
    	private String txturl;
     
    	public static final Parcelable.Creator<EnglishItem> CREATOR = new Parcelable.Creator<EnglishItem>() {
    		public EnglishItem createFromParcel(Parcel in) {
    			return new EnglishItem(in);
    		}
     
    		public EnglishItem[] newArray(int size) {
    			return new EnglishItem[size];
    		}
    	};
     
    	private EnglishItem(Parcel in)
    	{
    		readFromParcel(in);
    	}
     
    	public int getId() {
    		return id;
    	}
     
    	public void setId(int id) {
    		this.id = id;
    	}
     
    	public String getTitle() {
    		return title;
    	}
     
    	public void setTitle(String title) {
    		this.title = title;
    	}
     
    	public String getCategory() {
    		return category;
    	}
     
    	public void setCategory(String category) {
    		this.category = category;
    	}
     
    	public String getMp3url() {
    		return Des.decodeValue(Constants.DES_KEY, mp3url);
    	}
     
    	public void setMp3url(String mp3url) {
    		this.mp3url = mp3url;
    	}
     
    	public String getLrcurl() {
    		return Des.decodeValue(Constants.DES_KEY, lrcurl);
    	}
     
    	public void setLrcurl(String lrcurl) {
    		this.lrcurl = lrcurl;
    	}
     
    	public String getTxturl() {
    		return Des.decodeValue(Constants.DES_KEY, txturl);
    	}
     
    	public void setTxturl(String txturl) {
    		this.txturl = txturl;
    	}
     
    	@Override
    	public int describeContents() {
    		// TODO Auto-generated method stub
    		return 0;
    	}
     
    	@Override
    	public void writeToParcel(Parcel out, int flag) {
    		// TODO Auto-generated method stub
    		out.writeInt(id);
    		out.writeString(title);
    		out.writeString(category);
    		out.writeString(mp3url);
    		out.writeString(lrcurl);
    		out.writeString(txturl);
    	}
    	/**
    	 * 读
    	 * @param in
    	 */
    	public void readFromParcel(Parcel in)
    	{
    		id=in.readInt();
    		title=in.readString();
    		category=in.readString();
    		category=in.readString();
    		lrcurl=in.readString();
    		txturl=in.readString();
    	}
    }

    Parcelable.Creator不可少。
    同包下定义一个EnglishItem.aidl:

    1
    2
    
    package com.pocketdigi.english.aidl;
    parcelable EnglishItem;

    最后是调用接口aidl:
    PlayerAidl.aidl:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    package com.pocketdigi.english.aidl;
     
    import com.pocketdigi.english.aidl.EnglishItem;
     
    interface PlayerAidl {
    	/**
    	*传入列表
    	**/
    	void putList(inout List<EnglishItem> item);
    	/**
    	*播放指定音频
    	**/
    	void play(int index);
    	void pause();
    	/**
    	*暂停后恢复播放
    	**/
    	void resume();
    	/**
    	*删除指定项
    	**/
    	void delete(int position);
    	/**
    	*停止服务
    	**/
    	void stopService();
    }
  • 相关阅读:
    生产环境常见的几种JVM异常
    JVM垃圾回收时如何确定垃圾?是否知道什么是GCRoots?
    你平时工作用过的JVM常用基本配置参数有哪些?
    java X参数
    JUC之CAS
    JUC之List集合
    JUC之lock
    JUC之volatile
    BZOJ2132: 圈地计划
    BZOJ3991: [SDOI2015]寻宝游戏
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/3922846.html
Copyright © 2011-2022 走看看