service bunder 下 Parcel 用法

来源:互联网 发布:java接口压力测试工具 编辑:程序博客网 时间:2024/05/19 16:19
有问题请加: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

上一篇:android service 用法

下一篇:电源管理芯片之 Regulator用法。

相关热门文章
  • 感谢!一路有你~
  • paquet de clé de chanel -je...
  • sac a bandouliére lomchamp...
  • 信必优商业智能分析服务...
  • chemise burberry pas cher V...
  • Android之开发环境搭建
  • Android自定义View的实现...
  • AndroidManifest.xml配置文件...
  • Android源码调试方法详解...
  • 不用vs和cygwin!Eclipse+cdt...
  • 请问Linux默认shell的是什么 ...
  • 谁能够帮我解决LINUX 2.6 10...
  • 现在的博客积分不会更新了吗?...
  • shell怎么读取网页内容...
  • ssh等待连接的超时问题...
给主人留下些什么吧!~~
原创粉丝点击