我的android应用程序类实例正在侦听该事件的第三方服务。然后事件即将发布,我需要注意我的活动。这样做的正确方法是什么? 我知道startActivity()方法,但我的Activity还在运行!
答案 0 :(得分:1)
如果您的应用是本地通信,则可以使用local broadcasts。
对于组件之间的通信,您还可以使用EventBus(Android-library)。它非常易于使用和实现(只需不到一分钟的时间就能理解它的工作原理)并且性能很好。
答案 1 :(得分:1)
将本地广播事件与LocalBroadcastManager一起使用 - 有关详细信息,请参阅此tutorial。
为方便起见,我已经从上面的教程中复制了相关的代码。
要通知您已经开展的有关活动的活动,请尝试以下操作:
收到活动时,从您的Application类发送广播意图。
Intent intent = new Intent("my-event");
// add data
intent.putExtra("message", "data");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
在您的Activity中注册一个BroadcastReceiver,它将处理您收到的事件Intent。将以下代码添加到您的活动:
@Override
public void onResume() {
super.onResume();
// Register mMessageReceiver to receive messages.
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("my-event"));
}
// handler for received Intents for the "my-event" event
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
@Override
protected void onPause() {
// Unregister since the activity is not visible
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}