12

アクティビティからサービスにデータを送信し、いくつかの情報を受信しようとしていますが、次のようになっています。

java.lang.RuntimeException:プロセス間でParcelable以外のオブジェクトをマーシャリングできません。

アクティビティのコードは次のようになります。

Message msg = Message.obtain(null, 1);
    msg.obj=1;
    msg.replyTo=new Messenger(new PlanRequestIncomingHandler());
    try {
        msgService.send(msg);
    } catch (RemoteException e) {
        Log.i(tag, "Can not send msg to service");
        e.printStackTrace();
    }

msg.obj = somethingjava.lang.RuntimeExceptionを取得するように設定すると、誰かが私を助けてくれますか?

4

5 に答える 5

6

古い質問ですが、私は答えているので、将来誰かを助けるかもしれません.

実際のオブジェクトを使用している場合は、ぜひ、Parcelable Android を実装してください: 私のオブジェクトに Parcelable を実装するには?

ただし、OPがプリミティブを使用しようとしたが機能しなかったと述べているため、これを行う必要があります。

問題はここにあります。 msg.obj=1;これは、Parcelable を実装する実際のオブジェクトを想定しています。

使用するmsg.arg1 = 1;

その後、次を使用してサービス側で引数を取得できますmsg.arg1

簡単にするために、私は(私のコードから直接)使用します

Message msg = Message.obtain(null, PlayerService.MSG_ACTION_SEEK, i, -1);

-1は私にとって単なるホルダーです。

お役に立てれば。

編集:注意してください

Message msg = Message.obtain(null, PlayerService.MSG_ACTION_SEEK, i);

この署名は、OP の最初の試行と同等であり、Parcelable を期待しており、実際に私をつまずかせ、そもそも検索させたものです。実行時までエラーは発生しません。

于 2014-06-28T20:15:32.727 に答える
0

プリミティブ データ以外に、アクティビティとサービスの間でジャグリングしているオブジェクトは、Parcelable を実装する必要があり、できれば Serializable を実装する必要があります。

これがお役に立てば幸いです。

一番

-セルカン

于 2011-07-07T03:24:41.380 に答える