Service で Message に Bundle をセットして handleMessage する

Service から Activity に、Bundle でデータを渡す。
Bundle をメッセージに詰める場合、取り出す時は、いったんParcelable にキャストしてから、Bundle にキャストする、という手順を踏まないと、とうまくいかない。理屈は調べておらずわかりません・・・。

receiveParcelインターフェイスを実装済みとする。
        Bundle state = new Bundle();
        state.putInt("hoge", 77);
        // メッセージ送信
        handler.sendMessage(handler.obtainMessage(TRACKING_MESSAGE, state));
    private Handler handler = new Handler() {
    	// 送られてきたメッセージを順に処理する
        @Override
        public void handleMessage(Message handledMsg) {
            // 処理対象フィルタ
            if (handledMsg.what == MY_MESSAGE) {
            	// コールバックコール準備
                int numListeners = listeners.beginBroadcast();
                for (int i = 0; i < numListeners; i++) {
                    try {
                    	// サービスからコールバックでアクティビティにメッセージを送信する
                        /*
                         * このやり方だと getInt を書くと null になり動かない
                        Bundle bundle = (Bundle)handledMsg.obj;
                        Log.i(TAG, "lat:" + bundle.getInt("hoge"));
                         */
                        // いったん Parcelable にキャスト
                        Parcelable bundle = (Parcelable)handledMsg.obj;
                        // Bundle にキャスト。これならうまくいく。
                        int myHoge = ((Bundle) bundle).getInt("hoge");
                        Hoge hoge = new Hoge(myHoge);
 
                    	listeners.getBroadcastItem(i).receiveParcel(myHoge);

                    } catch (RemoteException e) {
                        Log.e("CallbackService", e.getMessage(), e);
                    }
                }
                // コールバックコール終了
                listeners.finishBroadcast();
            } else {
                super.dispatchMessage(handledMsg);
            }
        }
    };

※内容としては全然関係無いエントリーなのですけれど、こちら↓のソースを見ているときに上記デバッグ方法がわかりました。感謝。
http://d.hatena.ne.jp/Kazzz/20101112/p1