android Notification 點擊事情無響應的注意事項

我們總結一下兩種情況,假設我們的應用有兩個Activity(ParentActivity叨叙、SubActivity),notification中設置打開的Activity為SubActivity。
第一種情況就是:
點擊Notification ——>進入SubActivity ——> back鍵 ——> 退出應用
第二種情況:
點擊Notification ——>進入SubActivity ——> back鍵 ——> 退到ParentActivity ——>back鍵 ——>退出應用

第一種情況

PendingIntent contentIntent = PendingIntent.getActivity(context, 0,  intent, PendingIntent.FLAG_CANCEL_CURRENT);  

***注意最后一個參數(shù)***
FLAG_CANCEL_CURRENT:如果構建的PendingIntent已經存在耘戚,則取消前一個洽瞬,重新構建一個本涕。(PendingIntent contentIntent = PendingIntent.getActivity(context, 0,  intent, PendingIntent.FLAG_CANCEL_CURRENT); 第二個參數(shù)是0 )
 
FLAG_NO_CREATE:如果前一個PendingIntent已經不存在了,將不再構建它伙窃。

FLAG_ONE_SHOT:表明這里構建的PendingIntent只能使用一次菩颖。

FLAG_UPDATE_CURRENT:如果構建的PendingIntent已經存在,那么 系統(tǒng)將不會重復創(chuàng)建为障,只是把之前不同的傳值替換掉晦闰。(所以這里如果值不變 是不是有變化的 以致于會出現(xiàn)一些問題 通常做法就是在構建PendingIntent的時候傳入不一樣的requestCode來改變 更新PendingIntent 一般都是用這個放祟;PendingIntent contentIntent = PendingIntent.getActivity(context, new Random().nextInt() ,  intent, PendingIntent.FLAG_CANCEL_CURRENT); 第二個參數(shù)是隨機數(shù) )

***activity要實現(xiàn)單例模式***

 android:launchMode="singleTask"

第二種情況:
因為如果只打開一個SubActivity,程序并沒辦法知道他的上一級Activity是誰呻右,所以需要在點擊Notification時打開一組Activity舞竿,但是我們并不需要一個個去調用startActivity方法,PendingIntent提供了個靜態(tài)方法getActivities窿冯,里面可以設置一個Intent數(shù)組骗奖,用來指定一系列的Activity。
所以我們首先寫一個函數(shù)創(chuàng)建一個Activity數(shù)組:

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方法醒串,這個方法用來創(chuàng)建activity棧的根activity
接下來执桌,創(chuàng)建并顯示Notification:

void showNotification(Intent intent) {  
    Notification notification = new Notification(  
            R.drawable.status_icon,   
            "Hello World ticker text",  
            System.currentTimeMillis());  
  
    PendingIntent contentIntent = PendingIntent.getActivities(  
            this,  
            0,  
            makeIntentStack(this),   
            PendingIntent.FLAG_CANCEL_CURRENT);  
    notification.setLatestEventInfo(  
            this,   
            "Title",  
            "Hey, shall we have a dinner tonight",   
            contentIntent);  
    notification.flags |= Notification.DEFAULT_ALL;  
  
    mNM.notify(1, notification);  
}  

完整實例:

        // 創(chuàng)建一個NotificationManager的引用    
        NotificationManager notificationManager = (NotificationManager) this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
        // 定義Notification的各種屬性    
        Notification notification = new Notification(R.drawable.icon, "測試", System.currentTimeMillis());
        //FLAG_AUTO_CANCEL   該通知能被狀態(tài)欄的清除按鈕給清除掉 
        //FLAG_NO_CLEAR      該通知不能被狀態(tài)欄的清除按鈕給清除掉 
        //FLAG_ONGOING_EVENT 通知放置在正在運行 
        //FLAG_INSISTENT     是否一直進行,比如音樂一直播放芜赌,知道用戶響應 
        notification.flags |= Notification.FLAG_ONGOING_EVENT;
        // 將此通知放到通知欄的"Ongoing"即"正在運行"組中    
        notification.flags |= Notification.FLAG_NO_CLEAR;
        // 表明在點擊了通知欄中的"清除通知"后仰挣,此通知不清除,經常與FLAG_ONGOING_EVENT一起使用    
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
        //DEFAULT_ALL     使用所有默認值缠沈,比如聲音膘壶,震動,閃屏等等 

        //DEFAULT_LIGHTS  使用默認閃光提示 
        //DEFAULT_SOUNDS  使用默認提示聲音 
        //DEFAULT_VIBRATE 使用默認手機震動洲愤,需加上<uses-permission android:name="android.permission.VIBRATE" />權限 

        notification.defaults = Notification.DEFAULT_LIGHTS;
        //疊加效果常量 
        //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND; 
        notification.ledARGB = Color.BLUE;
        notification.ledOnMS = 5000; //閃光時間颓芭,毫秒 
        // 設置通知的事件消息   
        CharSequence contentTitle = "標題"; // 通知欄標題    

        CharSequence contentText = "內容"; // 通知欄內容    

        //如果需要跳轉到指定的Activity,則需要設置PendingIntent  

        Intent notificationIntent = new Intent(A.this, B.class);
        // 點擊該通知后要跳轉的Activity   
        notificationIntent.putExtra("date", "需要傳遞的參數(shù)");
        // FLAG_UPDATE_CURRENT 更新數(shù)據(jù)柬赐,如果有多個PendingIntent亡问,且requestCode相同,則會替換為最新extra數(shù)據(jù) 

        //如果需要通過不同的extra數(shù)據(jù)肛宋,進行處理州藕,就需要requestCode不相同
        int requestCode = new Random().nextInt();

        PendingIntent contentItent = PendingIntent.getActivity(this, requestCode, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        notification.setLatestEventInfo(this, contentTitle, contentText, contentItent);

       // 把Notification傳遞給NotificationManager     
        notificationManager.notify(0, notification);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酝陈,隨后出現(xiàn)的幾起案子床玻,更是在濱河造成了極大的恐慌,老刑警劉巖沉帮,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锈死,死亡現(xiàn)場離奇詭異,居然都是意外死亡遇西,警方通過查閱死者的電腦和手機馅精,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粱檀,“玉大人洲敢,你說我怎么就攤上這事∏羊牵” “怎么了压彭?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵睦优,是天一觀的道長。 經常有香客問我壮不,道長汗盘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任询一,我火速辦了婚禮隐孽,結果婚禮上,老公的妹妹穿的比我還像新娘健蕊。我一直安慰自己菱阵,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布缩功。 她就那樣靜靜地躺著晴及,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫡锌。 梳的紋絲不亂的頭發(fā)上虑稼,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音势木,去河邊找鬼蛛倦。 笑死,一個胖子當著我的面吹牛跟压,可吹牛的內容都是我干的胰蝠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼震蒋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躲庄?” 一聲冷哼從身側響起查剖,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎噪窘,沒想到半個月后笋庄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡倔监,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年直砂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浩习。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡静暂,死狀恐怖,靈堂內的尸體忽然破棺而出谱秽,到底是詐尸還是另有隱情洽蛀,我是刑警寧澤摹迷,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站郊供,受9級特大地震影響峡碉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜驮审,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一鲫寄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疯淫,春花似錦地来、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至适掰,卻和暖如春颂碧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背类浪。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工载城, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人费就。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓诉瓦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親力细。 傳聞我的和親對象是個殘疾皇子睬澡,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容