我创建了一个 WebService
类来处理对 Web 服务的多个不同请求,此类 Broadcast 和 intent 具有不同的 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
广播。
最佳答案
也许你可以使用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")
}
}
}
关于android - 在 onReceive 中处理多个 intent.getStringExtra 的干净方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363062/