2015-02-24 43 views
1

我想从服务sendMessage到活动,但由于某种原因它不工作。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 “广播信息” 被示出,然后什么也没有发生

问题迎刃而解

在Android清单

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

看来,当android:进程指定localbroadcastmanager不工作。我刚刚删除的android:工艺生产线,它的工作

+0

你确定'state'是真的吗?此外,只要有可能就使用本机类型,从'布尔状态'变为'布尔状态' – Blackbelt 2015-02-24 08:26:00

+0

'onReceive'方法执行与否? – 2015-02-24 08:26:33

+0

intent.putExtra(“state”,state);什么是状态变量值? – 2015-02-24 08:30:22

回答

2

没有错,你的代码。只有更新接收方法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方法根本没有被调用 – 2015-02-24 09:48:01

+0

它被解决了,它不工作的原因是在清单 2015-02-24 10:06:52