AIDLによる通信でBundleにParcelableをセットするとBadParcelableException(その2)

デバッグできないスレッドで発生しているようだが(BinderThread?)スタックトレースを見るに、以下で例外が発生しているのは間違いないようだ。

   public final  T readParcelable(ClassLoader loader) {
        String name = readString();
        if (name == null) {
            return null;
        }
        Parcelable.Creator creator;
        synchronized (mCreators) {
            HashMap map = mCreators.get(loader);
            if (map == null) {
                map = new HashMap();
                mCreators.put(loader, map);
            }
            creator = map.get(name);
            if (creator == null) {
                try {
                    Class c = loader == null ?
                        Class.forName(name) : Class.forName(name, true, loader);
                    Field f = c.getField("CREATOR");
                    creator = (Parcelable.Creator)f.get(null);
                }
                catch (IllegalAccessException e) {
                    Log.e("Parcel", "Class not found when unmarshalling: "
                                        + name + ", e: " + e);
                    throw new BadParcelableException(
                            "IllegalAccessException when unmarshalling: " + name);
                }
                catch (ClassNotFoundException e) { //ビンゴ 
                    Log.e("Parcel", "Class not found when unmarshalling: "
                                        + name + ", e: " + e);
                    throw new BadParcelableException(
                            "ClassNotFoundException when unmarshalling: " + name);
                }
                
                :

さて、そうなるとやはり嫌な嫌なクラスローダ関連かな。