Query
プロセス間でカスタム オブジェクトを送受信しています。Query
インスタンスを実装Parcelable
してラップしCursorWindow
ます。まず、プロセス A からプロセス B に a を介して送信しますMessenger
。これはうまくいきます。しかし、この同じインスタンスをプロセス B からプロセス C に を介して送信するとIntent
、次のエラーがスローされます。
E/com.blablabla.android.widget.ZKWidgetManager( 4583): java.lang.RuntimeException: Could not write CursorWindow to Parcel due to error -2147483641.
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.database.CursorWindow.nativeWriteToParcel(Native Method)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.database.CursorWindow.writeToParcel(CursorWindow.java:701)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeParcelable(Parcel.java:1254)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at com.blablabla.android.helpers.db.cursor.ParcelableCursor.writeToParcel(ParcelableCursor.java:461)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeParcelable(Parcel.java:1254)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeValue(Parcel.java:1173)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeMapInternal(Parcel.java:591)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Bundle.writeToParcel(Bundle.java:1619)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeBundle(Parcel.java:605)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeValue(Parcel.java:1170)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeMapInternal(Parcel.java:591)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Bundle.writeToParcel(Bundle.java:1619)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.os.Parcel.writeBundle(Parcel.java:605)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.content.Intent.writeToParcel(Intent.java:6475)
E/com.blablabla.android.widget.ZKWidgetManager( 4583): at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:1984)
関連するコードは次のとおりです。
public class ParcelableCursor implements Parcelable, CrossProcessCursor {
/** Cursor data window */
protected CursorWindow window = CursorHelper.getCursorWindowInstance(); // This just does a new CursorWindow(false) for 2.x compatibility reasons.
[...]
@Override
public void writeToParcel(final Parcel out, final int flags) {
out.writeParcelable(this.window, 0); // <<<<< Exception thrown here
[...]
}
}
テストIntent
:
ParcelableCursor test = new ParcelableCursor();
final Bundle bndl = new Bundle(); // Or with ClassLoader
bndl.putParcelable(BUNDLE, test);
intent.setAction(RECEIVER_QUERY_NAME);
intent.putExtra(QUERY, bndl);
ご覧のとおり、この例ParcelableCursor
は事実上空であるため、これはデータの問題ではありません。CursorWindow(String)
また、非推奨の代わりに新しいコンストラクターを使用しても役に立ちませんCursorWindow(boolean)
でした。
このエラー コードの意味や、このエラー コードを調べる場所はありますか?
事前に感謝します。