service bunder 下 Parcel 用法

有问题请加:Q群: 241359063  共同走向创业学习之旅。
原创:kylin_zeng  http://blog.chinaunix.net/uid/23795897.html在此感谢mars 老师的帮助。
转载请注明原创出处,尊重他人的劳动成果。

1、Parcel就是一个存放读取数据的容器, Android系统中的binder进程间通信(IPC)就使用了Parcel类来进行客户端与服务端数据的交互,而且AIDL的数据也是通过Parcel来交互的。在Java空间和C++都实现了Parcel,由于它在C/C++中,直接使用了内存来读取数据,因此,它更有效率。 

2、例如,创建两个按钮:

点击(此处)折叠或打开

  1. package com.kylin.e26_parcel;

  2. import android.os.Bundle;
  3. import android.os.Parcel;
  4. import android.app.Activity;
  5. import android.view.Menu;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;

  9. public class MainActivity extends Activity {

  10.     private Button button1;
  11.     private Button button2;
  12.     
  13.     Parcel parcl=null; //数据的包裹,可以放很多东西,都转成二进制了。
  14.     
  15.     @Override
  16.     protected void onCreate(Bundle savedInstanceState) {
  17.         super.onCreate(savedInstanceState);
  18.         setContentView(R.layout.activity_main);
  19.         
  20.         parcl =Parcel.obtain();
  21.         
  22.         button1=(Button)findViewById(R.id.button1);
  23.         button2=(Button)findViewById(R.id.button2);
  24.         
  25.         button1.setOnClickListener(new OnClickListener() {
  26.             
  27.             @Override
  28.             public void onClick(View v) {
  29.                 // TODO Auto-generated method stub
  30.                 parcl.writeString("abc");
  31.                 parcl.writeInt(123);
  32.                 parcl.writeFloat(1.22f); //堆栈一样,存了 abc 123 1.22 指针再最后面了。
  33.                 
  34.             }
  35.         });
  36.         
  37.     button2.setOnClickListener(new OnClickListener() {
  38.             
  39.             @Override
  40.             public void onClick(View v) {
  41.                 // TODO Auto-generated method stub
  42.                 
  43.                 //堆栈一样,存了 abc 123 1.22 指针再最后面了 ,这时要取数据,所有要移动指针到最前面。
  44.                 parcl.setDataPosition(0);
  45.                 
  46.                 String str=parcl.readString();
  47.                 int i= parcl.readInt();
  48.                 float f=parcl.readFloat();
  49.                 
  50.                 System.out.println("str-->" + str + "  i-->"+i + "  f-->" +f);
  51.                 
  52.             }
  53.         });
  54.         
  55.     }

  56.     @Override
  57.     public boolean onCreateOptionsMenu(Menu menu) {
  58.         // Inflate the menu; this adds items to the action bar if it is present.
  59.         getMenuInflater().inflate(R.menu.activity_main, menu);
  60.         return true;
  61.     }

  62. }
得到: str-->abc  i-->123  f-->1.22

E26_Parcel.rar

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(36) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值