我有一个由两部分组成的应用程序
1-一系列活动。(登录,然后是仪表板,然后是提要)。2-由推送服务器驱动的后台服务。
每次服务收到推送时,都会创建一个带有待处理 Intent 的通知,此 Intent 添加从推送服务器接收到的字符串附加内容示例:添加字符“N”或“R”
现在,在安装服务应用程序并第一次运行后,附加内容会正确发送到意图中,但是每次服务器通过意图向应用程序发送消息时,附加内容都不会改变,即
如果第一条消息发送“N”,那么所有后续消息都将发送“N”。
由于上面的描述太复杂,我会给你我的代码片段:
这是服务中的代码,它使用挂起的 Intent 创建通知
Notification n = new Notification();
n.flags |= Notification.FLAG_SHOW_LIGHTS;
n.flags |= Notification.FLAG_AUTO_CANCEL;
n.defaults = Notification.DEFAULT_ALL;
n.when = System.currentTimeMillis();
// The following line displays N or R depending on the message received .
Log.d("Received Type: ",text.substr(0,1); // Example "N" from: "N|Notification Text"
n.icon = R.drawable.notification_icon;
Intent i = new Intent(this, MyActivity.class);
i.putExtra("type", text.substr(0,1);
i.putExtra("text", text.substr(2);
PendingIntent pi = PendingIntent.getActivity(this, 0, i , 0);
n.setLatestEventInfo(this, NOTIF_TITLE, "Notification: " + text.substring(2), pi);
现在这是从意图接收数据的活动
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
activeWebview = (WebView) findViewById(R.id.webview);
Intent sender=getIntent();
type = sender.getStringExtra("type"); // Assume this is defined somewhere
text = sender.getStringExtra("text"); // Assume this is defined somewhere
Log.d( "Type received:" , type ); // This everytime displays "N"
我的问题是,每次收到新通知时,意图中发送的 Extras 都是相同的,除非我终止应用程序和服务并重新启动它,否则它永远不会改变。
好像它保存在内存中的某个地方,我需要清理它