Мне нужно реализовать функции уведомлений, такие как GMAIL, т.е. если экран в данный момент открыт, список должен автоматически обновляться, и уведомление не поступает. Если приложение закрыто, мы получаем уведомление. В GMAIL, если мы находимся в папке «Входящие» и приходит новая почта, она автоматически добавляется сверху без уведомления, и если приложение не открыто, мы получаем уведомление о новой почте. Я закодировал часть уведомлений, и она работает нормально, но единственное, что даже если я занимаюсь текущей деятельностью, я все равно получаю уведомления, которые я пытаюсь остановить.
Ниже приведен код класса Intent для отправки уведомления.
Intent listIntent = new Intent(this, ListActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ListActivity.class);
stackBuilder.addNextIntent(listIntent);
PendingIntent listPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("xxxx")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText("Update List"))
.setContentText("Update List").setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL).setWhen(System.currentTimeMillis());
builder.setContentIntent(listPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
Я много исследовал в Интернете и SO, но не получил никаких подходящих указателей. Кажется, есть решение от CommonsWare, но я не хочу использовать какую-либо внешнюю библиотеку. Также во время моего исследования я обнаружил, что знание того, какая активность находится на вершине, не является хорошей практикой для производства, поэтому я не могу использовать это, чтобы остановить уведомление, если моя текущая активность находится на вершине. Пожалуйста, порекомендуйте.
knowing which activity is on top isn't a good practice to do in production
почему? есть какие-либо проблемы? - person Pankaj Kumar   schedule 24.12.2014