Android通知的使用你可能會遇到的坑

2021-02-24 Android編程精選
點擊上方「Android編程精選」,選擇「置頂公眾號」

關鍵時刻,第一時間送達!

    先不說楚楓的這般年紀,能夠踏入元武一重說明了什麼,最主要的是,楚楓在剛剛踏入核心地帶時,明明只是靈武七重,而在這兩個月不到的時間,連跳兩重修為,又跳過一個大境界,踏入了元武一重,這般進步速度,簡直堪稱變態啊。

    「這楚楓不簡單,原來是一位天才,若是讓他繼續成長下去,絕對能成為一號人物,不過可惜,他太狂妄了,竟與龔師兄定下生死約戰,一年時間,他再厲害也無法戰勝龔師兄。」有人認識到楚楓的潛力後,為楚楓感到惋惜。

    「哼,何須一年,此子今日就必敗,巫九與龔師兄關係甚好,早就看他不順眼了,如今他竟敢登上生死臺挑戰巫九,巫九豈會放過他?」但也有人認為,楚楓今日就已是在劫難逃。

    「何人挑戰老子?」就在這時,又是一聲爆喝響起,而後一道身影自人群之中掠出,最後穩穩的落在了比鬥臺上。

    這位身材瘦弱,身高平平,長得那叫一個猥瑣,金鉤鼻子蛤蟆眼,嘴巴一張牙帶色兒,說話臭氣能傳三十米,他若是當面對誰哈口氣,都能讓那人跪在地上狂嘔不止。

    不過別看這位長得不咋地,他在核心地帶可是鼎鼎有名,劍道盟創建者,青龍榜第九名,正是巫九是也。

    「你就是巫九?」楚楓眼前一亮,第一次發現,世間還有長得如此奇葩的人。

    巫九鼻孔一張,大嘴一咧,拍著那乾癟的肚子,得意洋洋的道:「老子就是巫九,你挑戰老子?」

    「不是挑戰你,是要宰了你。」楚楓冷聲笑道。

    「好,老子滿足你這個心願,長老,拿張生死狀來,老子今日在這裡了解了這小子。」巫九扯開嗓子,對著下方吼了一聲。

    如果他對內門長老這麼說話,也就算了,但是敢這麼跟核心長老說話的,他可真是算作膽肥的,就連許多核心弟子,都是倒吸了一口涼氣,心想這楚楓夠狂,想不到這巫九更狂。

    不過最讓人無言的就是,巫九話音落下不久,真有一位核心長老自人群走出,緩緩得來到了比鬥臺上,左手端著筆墨,右手拿著生死狀,來到了巫九的身前。

    「我去,這巫九什麼身份,竟能這般使喚核心長老?」有人吃驚不已,那長老修為不低,乃是元武七重,比巫九還要高兩個層次,但卻這般聽巫九的話,著實讓人吃驚不已。

    「這你就不知道了吧,巫九在前些時日,拜了鍾離長老為師尊,已正式得到鍾離長老的親傳。」有人解釋道。

    「鍾離長老?可是那位性情古怪的鐘離一護?」

    「沒錯,就是他。」

    「天哪,巫九竟然拜入了他的門下?」

    人們再次大吃一驚,那鍾離一護在青龍宗可是赫赫有名,若要是論其個人實力,在青龍宗內絕對能夠排入前三,連護宗六老單打獨鬥都不會是他的對手。

    只不過那鍾離一護,如同諸葛青雲一樣,也是一位客卿長老,所以在青龍宗內只是掛個頭銜,什麼事都不管,更別說傳授宗內弟子技藝了,如今巫九竟然能拜入他老人家門下,著實讓人羨慕不已。

    「恩怨生死臺,的確可以決鬥生死,但必須要有所恩怨,你們兩個人,可有恩怨?」那位長老開口詢問道。

最近使用android的通知遇到一些坑,都是以前不知道的問題。 
先貼一段代碼


NotificationManager notificationManager = (NotificationManager) mContext.getSystemService
        (Context.NOTIFICATION_SERVICE);

notificationManager.cancel(105);

Intent equipListPage = new Intent(mContext, CommonActivity.class);
equipListPage.putExtra("fragmentName", EquipListFragment.class.getName());
equipListPage.putExtra("json", JSON.toJSONString(list));
PendingIntent pi = PendingIntent.getActivity(mContext, 0, equipListPage, null);


NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);
Notification notification = mBuilder
        .setAutoCancel(true)
        .setContentTitle("test")
        .setContentText("在你的周圍發現 " + list.size() + " 個設備")
        .setContentIntent(pi)
        .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.max_ic_launcher))
        .setSmallIcon(R.drawable.max_ic_launcher)
        .setWhen(System.currentTimeMillis())
        .setDefaults(Notification.DEFAULT_SOUND)
        .setPriority(NotificationCompat.PRIORITY_MAX)
        .build();
notifyId = (int) System.currentTimeMillis();
notificationManager.notify(105, notification);

目的是通知告訴用戶周圍發現一些東西,然後用戶點開顯示一個列表。很快寫完代碼,測試了下ok。然後就發布了版本,但是用戶一直說每次點開的列表都是同一個,讓我很費解,一直以為不是自己的問題,最後自己試了試,好尷尬。果然有問題,就是傳遞的數據沒有被更新。

如何解決的

問題在於這一句

PendingIntent.getActivity(mContext, 0, equipListPage, null);

一共有四個參數,看看源碼的解釋

* @param context The Context in which this PendingIntent should start
* the activity.
* @param requestCode Private request code for the sender
* @param intent Intent of the activity to be launched.
* @param flags May be {@link 
* {@link 

一共有四個FLAG_ONE_SHOT 、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT、FLAG_UPDATE_CURRENT 
我使用的是FLAG_UPDATE_CURRENT解決了問題,它主要是用來更新消息,比如你發送了一個通知消息,傳遞「123」 ,在點擊前有發送了一個通知消息,推送的是「345」,此時你點擊兩條消息,都是得到的「345」。 所以我的問題自然就解決了。

問題二

後面又來了一個需求,需要增加一個通知消息,展示不一樣的應用。 也就是上面的消息,通知1 需要得到「123」,通知2需要得到「456」 。 這該怎麼辦呢,這就需要用到第二個flag了 。當使用FLAG_CANCEL_CURRENT時,依然是上面的操作步驟,這時候會發現,點擊消息1時,沒反應,第二條可以點擊。原因在於第二個參數,你需要每個不同的消息,定義不同的requestCode ,問題就能夠得到解決。

【點擊成為Java大神】

相關焦點

  • android平臺通知體提醒機制研究
    你有過這樣的經歷嗎?深夜被手機鈴聲從睡夢中驚醒,卻發現是path上好友上傳新照片的提醒,亦或是應用市場上軟體更新的提醒,亦或是某遊戲中養的寵物又餓了……你有過這樣的經歷嗎?用手機聊天,一直沒發現屏幕上有任何變化,但對方已經因為你沒回復和胡思亂想了……智慧型手機快速普及,形形色色的apps湧入用戶手機,每款應用都希望抓住用戶,都希望被持續關注,於是鋪天蓋地的手機應用提醒和通知每天在用戶手機裡絡繹不絕,真的是很必須嗎?是否需要考慮一下用戶的習慣和感受?
  • 如何使用am命令啟動Android應用
    本文將詳細介紹使用am命令啟動應用的四種方法,相信會對你的測試開發工作有所幫助。一、使用am命令啟動一般的Android App。命令格式為:adb shell am start -n package/launch_activity示例:打開設置App命令:adb shell am start -n com.android.settings/com.android.settings.Settings命令的關鍵在於獲取package和launch_activity。
  • 教你如何在Mac系統下編譯Android系統的源碼
    你只需要在AppStore 裡面安裝Xcode就可以了。>在 Mac OS 中,可同時打開的文件描述符的默認數量上限太低,在高度並行的編譯流程中,可能會超出此上限。,一般掛載的新的盤是在/Volumes/ 路徑下的我分出來的區分大小寫的文件系統名字是Android 所以我cd進去就ok了創建一個目錄 mkdir XXX (XXX 是你自己取得名字)cd XXX如果遇到repo: command not found 問題 請在初始工作目錄輸入echo 'export PATH=$PATH:
  • Android實戰項目真槍實彈第二炮
    【正文】Android實戰項目真槍實彈第二炮    上節給大家講解了Android項目工具的使用和框架的搭建,本節咱們來完成每個項目都會有的引導頁的實現,動態加載圓點標記效果。具體實現的功能如下:    1.可以左右滑動圖片。
  • 當python遇到Andriod手機 那麼,萬物皆可盤!
    No,看過了今天的內容,你python的裝13指數,至少上升1w+,並附帶暴擊、濺射、眩暈、致盲效果。沒錯,就是這麼囂張當python遇到安卓手機我們日常的python學習和使用都是在電腦上的,會寫Linux下的python腳本、搞一些爬蟲的項目、開發幾個好玩的web網站,用python做數據分析。可如果脫離了電腦,就成了零。如何讓我們的python,隨時隨地的裝13?
  • android判斷edittext獲取焦點 - CSDN
    我們在開發中,可能會遇到需要判斷用戶在輸入框裡寫的內容合不合法,比如判斷用戶輸入的內容是否是手機號,接下來我通過詳細說明一個小Demo來解決這個問題首先看一下這個Demo實現的效果圖我多打了一位數字就會提示錯誤了
  • Android Spinner下拉框的基本使用
    ;java </item><item>php</item><item>xml</item><item>html</item></string-array>4、在布局文件xml的Spinner下添加:android
  • 老司機總結下 Android Studio 實用小技巧
    Cmd + O 搜索類文件,Cmd + Opt + O 在整個工程目錄下搜索文件使用場景:當你想找某個文件,但不想每個文件夾都點開每個文件,因為我們懶,此時Cmd + Opt + O 輸入文件名就能找到該文件了.5 .
  • android 排列 - CSDN
    它被定製為你屏幕上的一個空白備用區域,之後你可以在其中填充一個單一對象 — 比如,一張你要發布的圖片。所有的子元素將會固定在屏幕的左上角;你不能為FrameLayout中的一個子元素指定一個位置。後一個子元素將會直接在前一個子元素之上進行覆蓋填充,把它們部份或全部擋住(除非後一個子元素是透明的)。
  • 一次性權限,氣泡通知…… Android 11 更新和刪除的功能一覽
    無聲通知 當應用彈出通知時,可以左右滑動通知設置該應用的聲音權限,將其靜音並不會影響系統的聲音策略,只會將該應用的聲音設置為靜音,它將不能發出聲音或震動。被靜音的應用會被分類到「無聲通知」抽屜中。對話泡泡 彈出通知多了「對話泡」形式,部分通知內容可以使用這種形式。不過小淙目前還沒成功觸發對話泡。
  • android常用的五大布局 - CSDN
    那麼本篇文章,我們自然要將重點放在布局的種類、屬性、添加布局的方式以及如何使用上面了,那我們就開始吧!="1" /></LinearLayout>你會發現,這裡竟然將EditText和Button的寬度都指定為0dp,由於我們使用了 android:layout_weight屬性,此時控制項的寬度是不再由android:layout_width來決定,這裡指定為0dp是一種比較規範的寫法。
  • 開發微信小程序遇到的那些坑
    微信小程序於2017年1月份上線至今發展已經三年多的時間,微信小程序是一種不需要安裝即可使用的應用,它體積小巧,訪問快速,不佔用空間內存等特點。一經上線就受到一大批企業和網絡開發者的追捧,各路程式設計師工程師紛紛轉為開發小程序。
  • 健身房的那些坑,你遇到過幾個,有的可笑,有的無奈
    可是,真當我們去了健身房之後,免不了要和身邊的小夥伴打交道,下面就說說我遇到過的那些個坑。坑二練著練著就有一個不熟悉的小夥伴來跟你嘮嗑,說幾句感覺有點熟悉了,他就變成話嘮了,明明我是要認真訓練的,搞得我實在是沒法繼續練了。
  • Android 官方兼容庫 EmojiCompat Support Library
    「你就是巫九?」楚楓眼前一亮,第一次發現,世間還有長得如此奇葩的人。    巫九鼻孔一張,大嘴一咧,拍著那乾癟的肚子,得意洋洋的道:「老子就是巫九,你挑戰老子?」    「不是挑戰你,是要宰了你。」楚楓冷聲笑道。    「好,老子滿足你這個心願,長老,拿張生死狀來,老子今日在這裡了解了這小子。」巫九扯開嗓子,對著下方吼了一聲。
  • Android Pie 的 9 個隱藏功能:你可能錯過的若干最佳技巧
    雖然一些功能很容易找到,但另一些功能在我們的日常使用中可能被忽視或完全被遺忘。比如說你知道嗎?你可以從新的Android Pie手勢導航回到三個按鈕的導航系統。本文介紹幾個不引人注意、很容易忽略的Android Pie功能,這些功能對你說可能很重要。
  • android 垂直約束 - CSDN
    ,一般新建項目會默認添加這個依賴如果沒有也可以手動添加,截止完稿最新版本就是 1.0.2 版本,添加完依賴就能夠使用了compile 'com.android.support.constraint:constraint-layout:1.0.2'
  • 谷歌:Android Studio 和 Gradle 插件使用全新版本編號
    這種命名模式的變更使您能夠快速確定您在 Android Studio 中使用的 IntelliJ 平臺版本。此外,每個主要版本都將具有標準代號,從 Arctic Fox 開始,之後會按字母順序依次命名,以幫助用戶輕鬆辨別新老版本。我們建議您使用最新版本的 Android Studio,以體驗最新功能和質量改進。
  • 定義Android 清單
    在初 Intent一章中,我已L^使用 「startActivity」函式,魅脒m的「Intent」,硨艚g[器的 Activity。package=com.demo.android.bmi「package」 是「manifest」(清)嘶`的一特e儺裕例中的熱菘捎嗣鰨@用程式的M入c存在於「com.demo.android.bmi」@名Q空g/路街小android:versionCode=1android:versionName=1.0「android:versionCode
  • 如何在一部Android手機上正式使用2個WhatsApp數字
    因此,這是一個簡單的教程,它將向您展示如何在一個Android Phone上使用兩個2 WhatsApp Numbers。此方法也適用於單個sim卡設備,並且是完全官方的,因為我們將使用僅在Google Play商店中提供的應用。
  • android關閉開機啟動 - CSDN
    performEnableScreen(); }  這裡會將mSystemBooted設置為true,然後在hideBootMessagesLocked方法裡面把mShowingBootMessages true改成false,然後設定一個強制的30s啟動超時Message,隨後調用PhoneWindowManager的systemBooted方法,通知