在 onReceive 中处理多个 intent.getStringExtra 的干净方法?
Clean way to handle multiple intent.getStringExtra within onReceive?
我创建了一个 WebService
class 来处理对 Web 服务的多个不同请求,这个 class 广播和意图有不同的 key
取决于是什么方法原来叫在WebService
class。我一直在研究如何在 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")
}
}
}
我创建了一个 WebService
class 来处理对 Web 服务的多个不同请求,这个 class 广播和意图有不同的 key
取决于是什么方法原来叫在WebService
class。我一直在研究如何在 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")
}
}
}