Я использую LocalBroadcastManager для трансляции своих действий и услуг с использованием APPLICATION CONTEXT , например:
public class CommonForApp extends Application{
public void broadcastUpdateUICommand(String[] updateFlags,
String[] flagValues) {
Intent intent = new Intent(UPDATE_UI_BROADCAST);
for (int i = 0; i < updateFlags.length; i++) {
intent.putExtra(updateFlags[i], flagValues[i]);
}
mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
mLocalBroadcastManager.sendBroadcast(intent);
}}
Теперь, используя прослушиватель в моей службе, я вызываю трансляциюUpdateUICommand(), например:
public class mService extends Service {
public BuildNowPLaylistListListener buildCursorListener = new BuildNowPLaylistListListener() {
@Override
public void onServiceListReady() {
mApp.broadcastUpdateUICommand(
new String[] { CommonForApp.INIT_DRAWER},
new String[] {""});
}}}
И я получаю трансляцию в своей деятельности, например:
public class mActivity extends Activity{
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mtoast.showtext("in onreceive"); //toast to check
if (intent.hasExtra(CommonForApp.INIT_DRAWER))
initialiseDrawer();
}};
}
mApp является экземпляром приложения. CommonForApp — мой класс приложений.
Но в моей деятельности я не получаю никакой трансляции (менеджер вещания инициализируется с использованием контекста приложения).
Может ли кто-нибудь предложить мне, почему я не получаю трансляцию в своей деятельности? ..
.Заранее спасибо !
Activity
, когда вы отправляете широковещательную рассылку? Вы уверены, что регистрируете Receiver с правильнымIntentFilter
вActivity
? Кроме того, почему бы вам просто не вести прямую трансляцию сService
? - person Mike M.   schedule 07.06.2016LocalBroadcastManager.getInstance(this).registerReceiver(... // in activity in onCreate
иLocalBroadcastManager.getInstance(this).unregisterReceiver(...// in onDestroy
- person Stepan Maksymov   schedule 07.06.2016