0

私は、Messengerでアクティビティと通信するAndroidバインドサービスを持っています。私のサービスは、このようなハンドラを介して新しいメッセージをキャプチャ:戦略パターンとAndroidサービス/ UIメッセージ通信

@Override 
public void handleMessage(Message msg) { 
    switch (msg.what) { 
     case MyService.SEND_BLUETOOTH_MESSAGE: 
      ...; 
     case MyService.POST_DATA: 
      ...; 
     case MyService.GET_DATA: 
      ...; 
    } 
} 

これが最初では大丈夫だったが、あなたが想像できるように、それはすぐにあまりにも長い方法厄介な方法となりました。私はいくつかの素晴らしい戦略パターンでこれをリファクタリングしたいですが、私はそれをやる方法についてちょっと混乱しています。私は実際に私の活動が私のサービスに話す方法であるので、私は実際にそれらの定数を取り除くことはできません。何か案は?

Thxを事前に入力してください。

+0

機能によって機能を異ならせることはできますか?例えば、Bluetoothサービス/ APIサービス/ ..それぞれはhandleMessageを持っていますが、あなたの答えは彼の機能 – X3Btel

+0

@ X3Btel Thxによって結合されます。それは私が特定の[質問](http://stackoverflow.com/questions/40241607/several-services-same-android-app)を作成した別の問題です。私は本当にそうしたいと思いますが、それでも私は同じくすぐったスイッチを扱わなければなりません。 – Nikolai

+0

私はあなたがスイッチについて気に入っていないものはわかりません。すべてのケースでメソッドが呼び出され、ブレークされた場合、そのメソッドは醜いとは見えません。バインドされたサービスを使用している場合は、いくつかのメソッドをpublicにして、サービスインスタンスで呼び出すことができます。 – X3Btel

答えて

1

サービスをサービスにバインドすると、そのサービスのインスタンスを取得できます。そうすれば、インスタンス上でパブリックメソッドを直接呼び出すことができ、メッセージを処理する必要はありません。

関連する問題