1

startActivity()用于方法的意图和用于方法的意图有什么区别sendBroadcast()?在教程中,我找到了一种动态注册广播接收器的方法。为此,我必须提供一个字符串作为我的意图名称。在这种情况下如何选择一个意图名称并使用 for sendBroadcast()or 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);
    }
};
4

1 回答 1

0

我认为你做对了。有两种注册接收器的方法,在此处输入链接描述

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)

您可以在此处查看 Intent 的参考:

而且我认为谷歌想要打包最多的 msg 格式。

于 2013-08-18T06:47:03.800 回答