用于startActivity()
的意图与用于sendBroadcast()
方法的意图之间有什么区别?在教程中,我找到了一种动态注册广播接收器的方法。为此,我必须提供一个字符串作为我的意图名称。如何在这种情况下选择意图名称并用于sendBroadcast()
或registerReceiver()
?
我应该在android_manifest.xml
文件中添加内容吗?根据教程,我目前已经声明了这样的意图名称:
private static final String SEARCH_ACTION = "com.example.usingwebservices.rest.SEARCH";
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
unregisterReceiver(receiver);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
registerReceiver(receiver, new IntentFilter(SEARCH_ACTION));
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(progress!=null){
progress.dismiss();
}
String response = intent.getStringExtra(RestTask.HTTP_RESPONSE);
result.setText(response);
}
};
答案 0 :(得分:0)
我认为你做对了。在enter link description here后面有两种注册接收器的方法:
You can either dynamically register an instance of this class with Context.registerReceiver() or statically publish an implementation through the <receiver> tag in your AndroidManifest.xml.
并且在服务中排队的消息可能是:
Intent i = new Intent("com.example.usingwebservices.rest.SEARCH");
i.putExtra(RestTask.HTTP_RESPONSE, "msgdetails");
context.sendBroadcast(i);
意图的构造,参数是一个动作名称:
Intent(String action)
当使用startActivity时,我使用的构造:
Intent(Context packageContext, Class<?> cls)
您可以在here之后看到意图的引用:
我认为Google希望打包最多的msg格式。