我已经研究了许多类似问题的解决方案,但我无法找出我的代码有什么问题。我知道本地广播是一种流行的方式,我花了很多时间来实现它。目前,收信人并没有在我的舱单上声明,但根据我的理解,这就是
register
线条代表。
在我的活动中:
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("MyActivity", "onReceive");
String action = intent.getAction();
int current = intent.getIntExtra("test", 0);
Toast.makeText(MyActivity.this, current.toString(), Toast.LENGTH_LONG).show();
}
};
@Override
public void onResume() {
super.onResume();
Log.d("MyActivity", "onResume()");
LocalBroadcastManager.getInstance(MyActivity.this).registerReceiver(
mMessageReceiver, new IntentFilter("currentUpdate"));
}
@Override
protected void onPause() {
Log.d("MyActivity", "onPause()");
LocalBroadcastManager.getInstance(MyActivity.this).unregisterReceiver(mMessageReceiver);
super.onPause();
}
在服务中,我定义了一个方法:
private void sendNewBroadcast(Intent intent, int current){
intent.putExtra("test", current);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
Log.d("MyService", "new Broadcast sent from service");
}
我在服务中的其他地方使用它:
Intent intent = new Intent("currentUpdate");
sendNewBroadcast(intent, 5);
我已经调试过了,除了“接收”部分,一切都正常。我错过什么了吗?服务是在另一个活动中启动的,并且正在进行中。