我创建了一个Android应用程序,它通过使用Alarm服务在两分钟内轮询服务器一次。警报触发服务意图后,将轮询服务器以获取任何新数据。如果有新数据,将使用NotificationManager类生成状态栏通知。
我在这里几乎没有疑问:
首先会生成一条通知,指示从服务器到达的新数据更新。两分钟后,再次提供新数据。如何知道用户是否点击了旧通知?通过知道我将决定是否将“新消息到达”或“2个新消息到达”
如何从服务意图本身更新现有通知?
如何获取附加内容并将其附加到活动的列表视图中?现在,每次单击通知时,都会在活动中创建新的列表视图,并且仅附加该消息。
PollingServer.class:
NotificationManagerCompat.from(this).cancelAll();
Intent notificationIntent= new Intent(this, Messages.class);
notificationIntent.putExtra("msg",toastText);
TaskStackBuilder stackBuilder=TaskStackBuilder.create(this);
stackBuilder.addParentStack(Messages.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.clove)
.setContentTitle("My notification")
.setContentText(toastText)
.setContentIntent(contentIntent)
.setDefaults(Notification.DEFAULT_SOUND)
.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
Messages.class:
private ListView mainListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_messages);
Bundle extras = getIntent().getExtras();
final String msg = extras.getString("msg");
// Find the listView Resource
mainListView = (ListView) findViewById(R.id.listview);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1);
mainListView.setAdapter(arrayAdapter);
arrayAdapter.add(msg);
}