0

メキシコからこんにちは。

Handler を持つ FragmentActivity があり、その中に独自の Handler を持つ Fragment を入れます。

反対側には、ソケットに接続し、mHandler.obtainMessage(MESSAGE_SOMETHING).sendToTarget(); を介してメッセージを送信するサービスがあります。Bluetooth の例では、サービスとアクティビティ間の相互通信を実装しています。

私の質問は、FragmentActivity と Fragment で、サービスが送信する同じメッセージを処理するにはどうすればよいですか? 私はハンドラー配列か何かで考えましたが、それを行うためのより良い方法だと思います。

下手な英語でごめんなさい、良い一日を…

4

1 に答える 1

0

シンプルにしましたが、

最初にハンドラーのリストを実装します

LinkedList<Handler> mHandlers = new LinkedList<Handler>();
LinkedList<String> mTags = new LinkedList<String>();

次に、リストから Handler を登録および削除するための 2 つの関数を作成します。

private void registerHandler(Handler h, String tag){
    mHandlers.add(h);
    mTags.add(h);
}

private void removeHandler(String tag){
    int index=10000;
    for(int i = 0; i < mTags.size(); i++){
        if(s.equals(mTags.get(i))){
            index=i;
            break;
        }
    }
    if(index != 10000){
        mTags.remove(index);
        mHandlers.remove(index);
    }
}

そして、メッセージをn-Handlersに送信するために、関数を次のように変更します

for(Handler h:mHandlers){
    h.obtainMessage(MESSAGE_SOMETHING).sendToTarget();
}

それだけです...

于 2013-07-26T15:05:12.647 に答える