【问题标题】:How to put a runnable into bundle?如何将可运行文件放入捆绑包中?
【发布时间】:2012-12-03 16:48:36
【问题描述】:

我想通过 bundle 将 Runnable 传递给 Activity,以便在 onCreate 触发时 runnable 必须运行。我写了一个实现 Serializable 的类,但它会导致异常:"java.lang.RuntimeException: Parcelable encountered IOException writing serializable object"。 我的代码在这里:

package some.company.common;

import java.io.Serializable;

public class SerializedRunnable implements Serializable, Runnable {

    private static final long serialVersionUID = 6641813629033240205L;

    public SerializedRunnable() {
    }

    private Runnable runnable;

    public SerializedRunnable(Runnable runnable) {
        this.runnable = runnable;
    }

    @Override
    public void run() {
        this.runnable.run();
    }

}

【问题讨论】:

  • 只是被序列化的对象的内容。为什么要序列化一个runnable,看起来很浪费。您始终可以只将数据传递给另一个将获取此数据并进行处理的可运行对象

标签: android runnable serializable


【解决方案1】:

看起来 Runnable 是不可序列化的。要实现自己的序列化,您必须自己实现readObjectwriteObject

查看here

【讨论】:

  • 我添加了两个方法,就像这样:private void readObject(ObjectInputStream aInputStream) throws ClassNotFoundException, IOException { aInputStream.defaultReadObject(); } private void writeObject(ObjectOutputStream aOutputStream) throws IOException { aOutputStream.defaultWriteObject(); } 但同样的错误仍然存​​在。
猜你喜欢
  • 2011-03-18
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2014-11-21
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多