大多數熟悉Notification和PendingIntent API的人都知道setLatestEventInfo現在已被棄用。正在進行的通知和singleTop標誌
因此,我正試圖取代我現有的代碼(取決於方法已過時):
Context context = getApplicationContext();
Intent activityIntent = new Intent(context, Activity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Notification notification = new Notification(R.drawable.icon, getString(R.string.notify),System.currentTimeMillis());
PendingIntent startIntent = PendingIntent.getActivity(context, 0, activityIntent, 0);
notification.setLatestEventInfo(context, getString(R.string.notify), getString(R.string.notifysummary), startIntent);
this.startForeground(1234,notification);
正如你可能已經猜到,我從在後臺運行的服務中調用此。服務啓動時,它會提示通知。這是一個持續的,持續的通知,如果活動存在,則會將活動「Activity.class」放在前面,並創建一個活動的新實例以防其同時被殺死。工作正常,沒有任何問題。
現在想遷移到新的API級別,我想用下面的例子NotificationBuilder更換上面的代碼:
Context context = getApplicationContext();
Intent activityIntent = new Intent(context, Activity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent startIntent = PendingIntent.getActivity(context, 0, activityIntent, Intent.FLAG_ACTIVITY_SINGLE_TOP);
Notification notification = new Notification.Builder(context).setSmallIcon(R.drawable.ic_launcher).setContentText("App running").setContentTitle("My app").setOngoing(true).setAutoCancel(false).setContentIntent(startIntent).build();
this.startForeground(1234,notification);
但點擊通知不會有任何效果。不過,我已經嘗試過「Intent.FLAG_ACTIVITY_NEW_TASK」,因爲文檔說我應該。這會創建一項新任務,即使該活動已處於最佳狀態,與文檔所述內容相對應:PendingIntent,FLAG_ACTIVITY_NEW_TASK。
有沒有人遇到同樣的問題?如何構建一個持久化通知,在點擊時不會被解散,並且如果堆棧中的某處將活動置於頂部,否則會創建一個新的實例?
感謝您的幫助。
你是絕對正確的。那是(在其他一些缺陷之下)原因。現在修復它。非常感謝。 – mad