Я только что реализовал широковещательный приемник от адаптера синхронизации, и он работает как по маслу!
Использование Receiver, установленного в качестве внутреннего класса, и вызов registerReceiver в onCreate и unregisterReceiver в onDestroy сделали это для меня.
Поскольку у меня есть один метод стратегии для создания и запроса нескольких потоков,В начале прогона SyncAdapter у меня есть:
Intent intent = new Intent();
intent.setAction(ACTION);
intent.putExtra(SYNCING_STATUS, RUNNING);
context.sendBroadcast(intent);
И в конце прогона синхронизации у меня есть:
intent.putExtra(SYNCING_STATUS, STOPPING);
context.sendBroadcast(intent);
В своей деятельности я объявляю:
onCreate(Bundle savedInstance){
super.onCreate(savedInstance);
SyncReceiver myReceiver = new SyncReceiver();
RegisterReceiver(myReceiver,ACTION);
}
onDestroy(){
super.onPause();
unRegisterReceiver(myReceiver);
}
public class SyncReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
//do something
}
}
}
Для этого сценария вам не нужно добавлять получателя в файл манифеста.просто используйте как есть!