2013-08-17 6 views
1

Что такое ’ s Разница между намерением, используемым для startActivity(), и целью, используемой для метода sendBroadcast()? В учебнике я нашел способ для динамической регистрации широковещательного приемника. Для этой цели я должен был указать строку в качестве моего имени намерения. Как выбрать имя намерения в этом случае и использовать для sendBroadcast() или registerReceiver()?В чем разница между намерениями Android?

Следует ли добавить что-то в свой файл 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

Я думаю, что вы правильно. Есть два способа зарегистрировать приемник, следующие 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); 

Contruction Намерение, в параметр является именем действия:

Intent(String action) 

и при использовании startActivity, используемая мной конструкция:

Intent(Context packageContext, Class<?> cls) 

вы можете увидеть ссылки о намерениях следующих here:

, и я думаю, что Google хочет упаковать наиболее Сообщ формат.

+0

так достаточно ли использовать одно и то же действие для sendBroadcast() и registerReceiver(), чтобы получить процесс получения трансляции? или я должен зарегистрировать это имя-действие в другом месте для разрешения или в любых других целях. –

+0

да, вы можете. Умывка имеет два метода: setAction & setClass. Но я думаю, что, может быть, пакет двух типов параметр в одно намерение не является хорошей идеей, за исключением того, что они на самом деле то же самое. – BollMose

Смежные вопросы