如果自定义的类型需要通过Intent或IPC进行传递,就需要对数据进行序列化处理。

下面是Android官网上的一个例子

public class MyParcelable implements Parcelable {     private int mData;     public int describeContents() {         return 0;     }     public void writeToParcel(Parcel out, int flags) {         out.writeInt(mData);     }     public static final Parcelable.Creator<MyParcelable> CREATOR             = new Parcelable.Creator<MyParcelable>() {         public MyParcelable createFromParcel(Parcel in) {             return new MyParcelable(in);         }         public MyParcelable[] newArray(int size) {             return new MyParcelable[size];         }     };          private MyParcelable(Parcel in) {         mData = in.readInt();     } }
从以下例子可以看到一个基本类要实现序列化需要实现Parcelable接口,通过Parcel进行存储。实现Parcelable接口的类必须有一个名为:CREATOR 的静态字段,这是一个实现Parcelable.Creator接口的对象,这样一个自定义的类型就可以跟基本数据一样使用Intent进行传递。

使用Intent传递MyParcelable

工程目录


MainActivity.java

package com.example.parcelabledemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(MainActivity.this, HandleActivity.class);MyParcelable myParcelable = new MyParcelable(10);Bundle bundle = new Bundle();System.out.println("main " + myParcelable.get_data());bundle.putParcelable("value", myParcelable);intent.putExtras(bundle);startActivity(intent);}});}}


HandleActivity.java
package com.example.parcelabledemo;import android.app.Activity;import android.os.Bundle;import android.widget.Toast;public class HandleActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.handle);Bundle bundle = getIntent().getExtras();MyParcelable myParcelable = bundle.getParcelable("value");System.out.println(myParcelable.toString());Toast.makeText(this, "value = " + myParcelable.get_data(),Toast.LENGTH_LONG).show();}}

一个类的序列化就完成了



参考资料:

http://developer.android.com/reference/android/os/Parcelable.html

更多相关文章

  1. Android(安卓)自定义动态注册Broadcast框架
  2. Android(安卓)实现Json数据解析,并进行应用!
  3. Android(安卓)Interfaces and Architecture 安卓接口和架构
  4. android 学习之listview
  5. Android(安卓)Studio——private Handler mHandler = new Handle
  6. ListViewAnimations 源码浅析
  7. Android(安卓)Json解析方法
  8. Android到处都在使用的回调分析
  9. Android的接口定义语言(aidl)

随机推荐

  1. Android(安卓)LiveData Transformations
  2. Android(安卓)开关机动画
  3. cocos2dx android平台事件系统解析
  4. WebView中调用系统相册或拍照上传
  5. 【Android应用开发】Android(安卓)Studio
  6. android WindowManager可拖动悬浮按钮
  7. android TextView和EditText中显示图片
  8. android中如何隐藏应用程序标题栏和通知
  9. Android(安卓)中 Handler 引起的内存泄露
  10. Android使用Checkbox实现单选 ( 简单使用