2015-02-24 4 views
1

Я пытаюсь отправить сообщение из службы в действие, но по какой-то причине он не работает.LocalBroadcastManager не работает

активность

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_barcode); 
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, 
       new IntentFilter("custom-event-name")); 


private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Get extra data included in the Intent 
      Boolean state = intent.getBooleanExtra("state",false); 
      if(state){ 
       Toast.makeText(getApplicationContext(),"Данные успешно отправлены",Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }; 

    @Override 
    protected void onDestroy() { 
     // Unregister since the activity is about to be closed. 
     LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); 
     super.onDestroy(); 
    } 

Сервис

private void sendMessage(boolean state) { 
     Log.d("sender", "Broadcasting message"); 
     Intent intent = new Intent("custom-event-name"); 
     // You can also include some extra data. 
     intent.putExtra("state", state); 
     LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
    } 

Log.d "вещает сообщение" отображается, а затем ничего не происходит

ПРОБЛЕМА решаемые

В андроида проявляется

<service 
    android:name=".service.TerminalService" 
    android:process=":update_service" > 
</service> 

Кажется, когда android: процесс указан localbroadcastmanager не работает. Я просто удалил андроида: технологическую линию и работал

+0

вы уверены, что 'state' верно? Кроме того, каждый раз, когда это возможно, используйте собственный тип, переходите из 'Boolean state' в' boolean state' – Blackbelt

+0

'onReceive' метод, выполняющий или нет? –

+0

intent.putExtra («состояние», состояние); что такое значение переменной состояния? –

ответ

2

ничего плохого с кодом .only обновить ваш получить методу else пункт

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       // Get extra data included in the Intent 
       Boolean state = intent.getBooleanExtra("state",false); 
       if(state){ 
       Toast.makeText(getApplicationContext(),"Данные успешно отправлены",Toast.LENGTH_SHORT).show(); 
      } 
      else { 
       Toast.makeText(getApplicationContext(),"else message ",Toast.LENGTH_SHORT).show(); 

      } 
      } 
     }; 
+0

OnReceive метод не вызывается при всех –

+0

она решается, причина не работает в манифесте <сервис андроид: имя = «service.TerminalService.» андроид: процесс =» : update_service "> –