我有一个使用解析推送通知服务的应用程序。以下是我用于接收通知的课程:
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
}
我还在清单中注册了这个自定义接收器:
<receiver
android:name="com.package.MessageReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
通知系统一切都很好。收到通知后,我想相应地更新运行活动用户界面(比如显示新通知的图标),但我无法通过onReceive
方法访问活动对象。这样做的最佳做法是什么?我无法在这个问题上使用上下文对象。
感谢
答案 0 :(得分:2)
我相信你可以通过使用BroadcastReceiver来实现这一目标。
您可以在要访问的活动中定义接收者, 请参阅下面的代码段。
assert_raises
然后在您的自定义接收器中发送广播。
public MyActivity extends Activity
{
//... code
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//... update ui here
}
};
@Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction("suitablename");
registerReceiver(receiver, filter);
super.onResume();
}
@Override
protected void onPause() {
unregisterReceiver(receiver);
super.onPause();
}
//... code
}
不要忘记更新清单
public class MessageReceiver extends ParsePushBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//...some code in here
Intent intent = new Intent();
intent.setAction("suitablename");
context.sendBroadcast(intent);
}
}