我有一个应用程序,它使用一个IntentService
来处理传入的谷歌云消息传递消息。目前,每当我通过该onHandleIntent()
功能收到消息时,我都会创建一个通知。该通知会打开一个特定的活动,然后进行一些计算并更新 UI。我正在尝试实现我的实现,如果我已经在通知将打开的 Activity 上,那么服务应该能够更新 UI 而无需发送通知。我假设我可以使用广播接收器来执行此操作,但我不确定如何实现它,以便仅当 Activity 正在运行时它才应该更新 Activity,否则它应该发布通知。
我不确定如何执行以下操作:
检查特定的 Activity 是否已经在运行。
如果 Activity 已经在运行,则无需调用即可执行所需的计算和 UI 更新
startActivity()
编辑:我对我的代码进行了一些更改,但我没有看到我在 onReceive() 方法中添加的 logcat 消息。
我在 IntentService 类的 onHandle() 函数中添加了以下代码:
Intent in = new Intent("com.example.gcm.DataActivity");
sendBroadcast(in);
“com.example.gcm”是我的包名,DataActivity 是 Activity 的名称。
我已将以下代码添加到我的活动中:
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(TAG, "start");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d(TAG, "notif received");
}
};
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
unregisterReceiver(receiver);
}