我尝试使用Otto。我认为它到目前为止有效,但我收到了两次事件。
这就是我所拥有的(我按照GitHub 上的示例进行操作):
制作人:
public class NetworkChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive(final Context context, final Intent intent)
{
Log.i("ralphs", "onReceive");
// .... more stuff
final Bus bus = TRaumfeldApp.getInstance().getBus();
bus.register(this);
bus.post(new NetworkChangeEvent());
bus.unregister(this);
}
@Produce
public NetworkChangeEvent produceAnswer()
{
Log.i("ralphs", "produceAnswer");
return new NetworkChangeEvent();
}
}
订阅者:
public class MainActivity extends ActionBarActivity
{
private Bus mBus;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// otto event bus
mBus = TRaumfeldApp.getInstance().getBus();
}
@Override
protected void onResume()
{
super.onResume();
mBus.register(this);
}
@Override
protected void onPause()
{
super.onPause();
mBus.unregister(this);
}
@Subscribe
public void answerAvailable(NetworkChangeEvent event)
{
Log.i("ralphs", "answerAvailable");
}
}
日志锁是这样的:
I/ralphs﹕ onReceive
I/ralphs﹕ produceAnswer
I/ralphs﹕ answerAvailable
I/ralphs﹕ answerAvailable
为什么我会收到两次事件?