android.os.BadParcelableException : ClassNotFoundException when unmarshalling: exception

标签 android marshalling parcel

值正在传递并且执行正常,但我看到这些被抛出到 logcat 中,我想消除它们,我检查了旧论坛但没有具体说明。我在下面发布我的代码,请告诉我为什么会不会出现这个问题

public class ExecutionInfo implements Parcelable
{

    private int offSet;

    private List<Integer> pollingIntervalArray = new ArrayList<Integer>();

    private List<String> commandLst= new ArrayList<String>();

    private int repeatCount;

    private int executorId;

    private int processType;


    public ExecutionInfo()
    {

    }

    public ExecutionInfo(Parcel source)
    {
        offSet = source.readInt();
        repeatCount = source.readInt();
        executorId = source.readInt();
        processType = source.readInt();
        source.readStringList(commandLst);
        source.readList(pollingIntervalArray, Integer.class.getClassLoader());
    }

    public int getOffSet()
    {
        return offSet;
    }

    public void setOffSet(int offSet)
    {
        this.offSet = offSet;
    }

    public List<Integer> getInterval()
    {
        return pollingIntervalArray;
    }

    public void setInterval(List<Integer> pollingIntervalVec)
    {
        this.pollingIntervalArray = pollingIntervalVec;
    }

    public List<String> getCommandLst()
    {
        return commandLst;
    }

    public void setCommands(String command)
    {
        commandLst.add(command);
    }

    public int getRepeatCount()
    {
        return repeatCount;
    }

    public void setRepeatCount(int repeatCount)
    {
        this.repeatCount = repeatCount;
    }

    public int getExecutorId()
    {
        return executorId;
    }

    public void setExecutorId(int executorId)
    {
        this.executorId = executorId;
    }

    @Override
    public int describeContents()
    {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags)
    {

          dest.writeInt(offSet);
          dest.writeInt(repeatCount);
          dest.writeInt(executorId);
          dest.writeInt(processType);
          dest.writeStringList(commandLst);
          dest.writeList(pollingIntervalArray);
    }

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

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

    public int getProcessType()
    {
        return processType;
    }

    public void setProcessType(int processType)
    {
        this.processType = processType;
    }
}

重复抛出的异常是:但这并不妨碍执行

: com.seven.superapptwitter.xmlHandler.ExecutionInfo
07-27 16:52:11.418: WARN/Intent(2458): Failure filling in extras
07-27 16:52:11.418: WARN/Intent(2458): android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.seven.superapptwitter.xmlHandler.ExecutionInfo
07-27 16:52:11.418: WARN/Intent(2458):     at android.os.Parcel.readParcelable(Parcel.java:1883)
07-27 16:52:11.418: WARN/Intent(2458):     at android.os.Parcel.readValue(Parcel.java:1771)
07-27 16:52:11.418: WARN/Intent(2458):     at android.os.Parcel.readMapInternal(Parcel.java:2008)
07-27 16:52:11.418: WARN/Intent(2458):     at android.os.Bundle.unparcel(Bundle.java:208)
07-27 16:52:11.418: WARN/Intent(2458):     at android.os.Bundle.putAll(Bundle.java:281)
07-27 16:52:11.418: WARN/Intent(2458):     at android.content.Intent.fillIn(Intent.java:5127)
07-27 16:52:11.418: WARN/Intent(2458):     at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:195)
07-27 16:52:11.418: WARN/Intent(2458):     at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:177)
07-27 16:52:11.418: WARN/Intent(2458):     at android.app.PendingIntent.send(PendingIntent.java:400)
07-27 16:52:11.418: WARN/Intent(2458):     at com.android.server.AlarmManagerService$AlarmThread.run(AlarmManagerService.java:680)

最佳答案

我认为这里已为您解答:Problem unmarshalling parcelables .

基本上您需要设置类加载器,因为 AlarmManagerService 是一个单独的操作系统进程。

关于android.os.BadParcelableException : ClassNotFoundException when unmarshalling: exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865688/

相关文章:

java - 为什么我在使用Eclipse(Android)时仍然无法使用fragment?

java - 确定要更新的 fragment

c# - 在 C# 中使用参数打包 IDispatch 调用(使用 DISPPARAMS)

java - 在 Android 中使用 Parcelable 时 readTypedList 抛出 OutOfMemoryError

java - 如何在 Parcel 中使用 writeStringArray() 和 readStringArray()

java - gridview 列中的自动间距?

android - Android Activity 之间传递 int 变量

java - Jaxb 应该编码内部类吗?

serialization - Go语言的加载和存储

java - Parcelable 类不会创建可分割对象