0

我通知用戶有關的一些事件(在我的情況下,短信接收)和懸掛的PendingIntent,如:再次PendigIntent在通知

intent = new Intent(context, ConversationActivity.class); 
intent.setAction(Constants.ACTION_SMS_RECEIVED); 
intent.putExtra(MessageDAO.CONVERSATION_ID, message.getConversationId()); 
intent.putExtra(MessageDAO._ID, message.getId()); 
intent.putExtra(MessageDAO.ADDRESS, message.getAddress()); 
contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

我的目的是啓動新ConversationActivity如果沒有一個,要麼只是重新使用舊的(刷新其內容)。但事實上,我的PendingIntent只是使用舊的不刷新它的內容。我已經檢查過那些舊的附加信息仍然發送給我ConversationActivity

問題是什麼?我真的堅持了下來,搞不懂該怎麼辦...

更新

我的目標ConversationActivity.onCreate(),例如提取演員:

Bundle bundle=this.getIntent().getExtras(); 
    if(bundle!=null) { 
     conversationId=bundle.getString(MessageDAO.CONVERSATION_ID); 
     address=bundle.getString(MessageDAO.ADDRESS); 
    } 
+0

什麼當新的「Intent」發送給它時,它是「舊」活動的狀態嗎?在哪裏(以何種方法)以及如何檢查附加項?顯示用於提取/檢查附加項的代碼 –

+0

@DavidWasser I我更新了我的問題 – barmaley

回答

1

如果你想重用現有活動,您需要執行以下操作。在創建通知,補充一點:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

然後你需要在ConversationActivity覆蓋onNewIntent()。如果用戶點擊的通知,並且已經有一個活躍的ConversationActivity將其稱爲(而不是onCreate()。您將需要提取從Intent的「額外」的onNewIntent(),並與這個新的數據替換內容。