在 onReceive 中处理多个 intent.getStringExtra 的干净方法?

Clean way to handle multiple intent.getStringExtra within onReceive?

我创建了一个 WebService class 来处理对 Web 服务的多个不同请求,这个 class 广播和意图有不同的 key 取决于是什么方法原来叫在WebServiceclass。我一直在研究如何在 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 广播。

也许你可以使用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")
        }

    }
}