1

WebServiceWeb サービスへの複数の異なる要求を処理するクラスを作成しました。このクラスの Broadcast と意図keyは、クラスで最初に呼び出されたメソッドに応じて異なりWebServiceます。これを適切に処理する方法に行き詰まっていWebServiceReceiverます...

の重要な部分は次のWebServiceとおりです。

   //Broadcast the intent with data received from service call.
    broadcastIntent.putExtra(broadcastIntentKeyName, response.toString());
    sendBroadcast(broadcastIntent);

これが私のものonReceiveです:

public class WebServiceReceiver extends BroadcastReceiver
{

    public WebServiceReceiver() {}

    @Override
    public void onReceive(Context context, Intent intent) {

        Debug.waitForDebugger();

        //NOTE: Not sure if i'm approaching this the right way, sure doesn't seem like it... 
        //Its possible that some of these will be NULL.
        String GetRequestForRouteWithDriverId_DATA = intent.getStringExtra("Helper_GetRequestForRouteWithDriverId");
        String StoreDataInServer_DATA = intent.getStringExtra("Helper_StoreDataInServer");
        String SubmitDriverRouteData_DATA = intent.getStringExtra("Helper_SubmitDriverRouteData");

        MainActivity.getInstance().updatetextViewControl(GetRequestForRouteWithDriverId_DATA);

    }
}

私が持っているものは機能しますが、コードのコメントで述べたように、適切な方法ではないように感じます。

これにアプローチするより良い方法はありますか?onReceiveこれを再利用して、すべてのWebServiceブロードキャストを処理したいだけです。

4

1 に答える 1

2

Intent.setAction()メソッドが使えるかも

    broadcastIntent.setAction("Your action");
    broadcastIntent.putExtra("Your Extra");
    sendBroadcast(broadcastIntent);

それからあなたの受信機で...

public class WebServiceReceiver extends BroadcastReceiver
{

public WebServiceReceiver() {}

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if(action.equals("Your Action")){
            String yourExtra = intent.getStringExtra("Your extra")
        }

    }
}
于 2015-12-18T22:37:53.073 に答える