兩種狀況,第三種狀況,相似於微信,點擊消息,跳到聊天框,退出後回到主頁android
第一種狀況就是:數組
點擊Notification ——>進入secActivity ——> back鍵 ——> 退出應用微信
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
第二種狀況:ide
點擊Notification ——>進入secActivity ——> back鍵 ——> 退到mainActivity ——>back鍵 ——>退出應用this
須要添加intent數組,這裏是兩個單位,因此先打開的是secActivity(intent[1]),spa
須要在Manifest中對指定的Activity設置屬性code
<activity android:name=".secActivityl" android:launchMode="singleTask" android:taskAffinity="" android:excludeFromRecents="true"> </activity>
PendingIntent提供了個靜態方法getActivities,裏面能夠設置一個Intent數組,用來指定一系列的Activity。blog
Intent[] makeIntentStack(Context context) { Intent[] intents = new Intent[2]; intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, com.example.notificationtest.MainActivity.class)); intents[1] = new Intent(context, com.example.notificationtest.SubActivity.class); return intents; }
其中須要注意的是Intent.makeRestartActivityTask方法,這個方法用來建立activity棧的根activityget
接下來,建立並顯示Notification:it
void showNotification(Intent intent) { Notification notification = new Notification( R.drawable.status_icon, "消息欄頂部標題", System.currentTimeMillis()); PendingIntent contentIntent = PendingIntent.getActivities( this, 0, makeIntentStack(this), PendingIntent.FLAG_CANCEL_CURRENT); notification.setLatestEventInfo( this, "下拉消息欄標題", "消息內容", contentIntent); notification.flags |= Notification.DEFAULT_ALL; mNM.notify(1, notification); }
第三種:
點擊Notification ——>進入mainActivity——>根據bundle信息——>進入secActivity ——> back鍵 ——> 退到 mainActivity——>back鍵 ——>退出應用
這裏須要注意的是,當點擊notification的時候,應用是否已經在棧中
1.若是應用不在,也就是未打開狀態,那麼使用singltask模式打開,bundle消息能夠在onstart中獲取
2.若是應用已經在前臺,那麼點擊notification是不會出發onstart更新intent消息的,須要使用
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Log.e("tag", "onNewINtent執行了"); setIntent(intent); String ringName = intent.getStringExtra("ringName"); Log.e("tag", ringName+"傳過來的值"); if (ringName != null) { pager.setCurrentItem(1); } }