Parcel用法

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西:

1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:

writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc

2)describeContents方法

3)静态的Parcelable.Creator接口,本接口有两个方法:

createFromParcel(Parcel in) 实现从in中创建出类的实例的功能;

newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。

简单的使用方法:

public class Student  implements Parcelable{
public int _id;
public string name;
public int sex;
public int age;
Student (Parcel p){
      _id = p.readInt();
      name = p.readString();
      sex = p.readInt();
      age = p.readInt();
}

Student(){};


public static final Parcelable.Creator<Student> CREATOR
             = new Parcelable.Creator<Student>() {
                 public Student createFromParcel(Parcel p) {
                     return new Student(p);
                 }

                 public Student[] newArray(int size) {
                     return new Student[size];
                 }
             };

     public int describeContents() {
         return 0;
     }

     public void writeToParcel(Parcel p, int flags) {
         p.writeInt(_id);
         p.writeString(label);
         p.writeInt(sex);
         p.writeInt(age);
      
     }
}


发送Parcel的activity

public SendParcel extends Activity{
      public void onCreate(Bundle bundle){
         super.onCreate(bundle);
         setContentView(R.layout.main);
         Student s = new Student();
         s._id = 1;
         s.name = "ygc";
         s.sex = 1;
         s.age= 23;
         Intent i = new Intent();
         i.putExtra("key", s);
         i.setClass(this, Receive.class);
         startActivity(i);
      }
}

接收Parcel的activity

public class Receive extends Activity {  
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main2);
         Intent i = getIntent();
         Student s = i.getParcelableExtra("key");
         System.out.println(s.name);
     }

}

     android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。

     除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西

1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:

writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc

2)describeContents方法。没搞懂有什么用,反正直接返回0也可以

3)静态的Parcelable.Creator接口,本接口有两个方法:

createFromParcel(Parcel in) 实现从in中创建出类的实例的功能

newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。

示例:

    需求:我们经常需要在多个部件(activity或service)之间通过Intent传递一些数据,简单类型(如数字、字符串)的可以直接放入Intent。复杂类型(例如,J2ee中的Bean)的必须实现Parcelable接口。示例如下:


 

这里采用Bundle是因为在Parcel中并没有key的概念存在,而Bundle相当于Map。


### Parcel.js 使用指南 #### 什么是 ParcelParcel 是一种零配置的前端打包工具,它能够快速地处理 JavaScript、CSS 和其他静态资源文件。与 Webpack 不同的是,Parcel 提供了一种无需手动编写复杂配置的方式即可完成大多数常见开发需求的功能[^1]。 #### 如何安装 Parcel? 要使用 Parcel,可以先通过 npm 或 yarn 进行全局安装: ```bash npm install -g parcel-bundler ``` 或者仅作为项目的本地依赖项来安装: ```bash npm install --save-dev parcel-bundler ``` #### 基础用法 一旦安装完毕,在命令行中运行以下命令以启动开发服务器: ```bash parcel index.html ``` 这会自动监听 `index.html` 文件及其所引用的所有资产的变化,并重新编译它们。默认情况下,该服务会在端口 **1234** 上运行。 #### 静态文件复制插件 如果项目中有需要被直接拷贝到最终构建目录中的静态文件,则可考虑使用 `parcel-plugin-static-files-copy` 插件。此插件允许开发者定义哪些特定类型的文件应该保持不变并转移到输出位置[^3]。 要在您的项目里集成这个功能,请按照下面的方法操作: 1. 添加插件至 devDependencies 中: ```bash npm install --save-dev parcel-plugin-static-files-copy ``` 2. 创建 `.parcercopyrc.json` 文件用于指定规则, 示例如下所示: ```json { "files": [ "./assets/**/*" ] } ``` 上述 JSON 片段表示将 assets 文件夹下的所有内容都复制过去。 #### 结合 TensorFlow.js 使用案例 对于那些希望利用机器学习框架 (如TensorFlow.js) 构建应用程序的人来说,也可以轻松借助 Parcel 来管理这些库。只需要简单地从 NPM 安装所需模块,并按需引入即可[^2]: ```javascript const tf = require('@tensorflow/tfjs'); // 加载模型... let model = await tf.loadLayersModel('model.json'); console.log(model.summary()); ``` 以上代码片段展示了如何加载预训练好的神经网络结构来进行推理计算。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值