如何将可运行文件放入捆绑包中?

Posted

技术标签:

【中文标题】如何将可运行文件放入捆绑包中?【英文标题】: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,看起来很浪费。您始终可以只将数据传递给另一个将获取此数据并进行处理的可运行对象 【参考方案1】:

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

查看here

【讨论】:

我添加了两个方法,就像这样:private void readObject(ObjectInputStream aInputStream) throws ClassNotFoundException, IOException aInputStream.defaultReadObject(); private void writeObject(ObjectOutputStream aOutputStream) throws IOException aOutputStream.defaultWriteObject(); 但同样的错误仍然存​​在。

以上是关于如何将可运行文件放入捆绑包中?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时替换捆绑包中的图像

如何使用捆绑包中的 node_modules 依赖项正确构建用于生产的 NestJS 应用程序?

如何使用 Maven 将第 3 方 OSGi 捆绑包添加到部署包中?

Symfony - 如何覆盖不在捆绑包中的供应商组件

Eclipselink:如何在每个捆绑包中获取 EntityManager?

如何将可拖动对象放入 gridster