成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

移動開發 Android
最近使用android的通知遇到一些坑,都是以前不知道的問題。先貼一段代碼,目的是通知告訴用戶周圍發現一些東西,然后用戶點開顯示一個列表。很快寫完代碼,測試了下ok。然后就發布了版本,但是用戶一直說每次點開的列表都是同一個,讓我很費解,一直以為不是自己的問題,最后自己試了試,好尷尬。

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

[[236632]]

先貼一段代碼

  1. /** 
  2.  *  創建通知欄管理工具 
  3.  */ 
  4. NotificationManager notificationManager = (NotificationManager) mContext.getSystemService 
  5.         (Context.NOTIFICATION_SERVICE); 
  6.  
  7. notificationManager.cancel(105); 
  8.  
  9. Intent equipListPage = new Intent(mContext, CommonActivity.class); 
  10. equipListPage.putExtra("fragmentName", EquipListFragment.class.getName()); 
  11. equipListPage.putExtra("json", JSON.toJSONString(list)); 
  12. PendingIntent pi = PendingIntent.getActivity(mContext, 0, equipListPage, null); 
  13.  
  14. /** 
  15.  *  實例化通知欄構造器 
  16.  */ 
  17. NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext); 
  18. Notification notification = mBuilder 
  19.         .setAutoCancel(true
  20.         .setContentTitle("test"
  21.         .setContentText("在你的周圍發現 " + list.size() + " 個設備"
  22.         .setContentIntent(pi) 
  23.         .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.max_ic_launcher)) 
  24.         .setSmallIcon(R.drawable.max_ic_launcher) 
  25.         .setWhen(System.currentTimeMillis()) 
  26.         .setDefaults(Notification.DEFAULT_SOUND) 
  27.         .setPriority(NotificationCompat.PRIORITY_MAX) 
  28.         .build(); 
  29. notifyId = (int) System.currentTimeMillis(); 
  30. notificationManager.notify(105, notification); 

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

如何解決的

問題在于這一句

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

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

  1. * @param context The Context in which this PendingIntent should start 
  2. * the activity. 
  3. * @param requestCode Private request code for the sender 
  4. * @param intent Intent of the activity to be launched. 
  5. * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE}, 
  6. * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, 

一共有四個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 ,問題就能夠得到解決。

責任編輯:未麗燕 來源: Android開發中文站
相關推薦

2013-05-13 10:03:04

git

2020-07-06 07:48:16

MySQL細節SQL

2018-07-10 10:45:00

規范Commit項目

2018-07-10 11:05:18

開發者技能命令

2014-11-14 15:34:11

2019-07-01 09:10:00

前端開發技術

2017-11-02 21:02:11

數據庫數據庫的管理字段長度

2020-03-09 10:10:02

AI 數據人工智能

2025-06-20 08:14:55

2015-08-24 11:26:35

LinuxWindows

2017-12-11 10:23:58

數據錯誤收集

2015-07-09 10:36:40

iOS

2023-09-27 22:14:10

GIT 命令開發

2015-04-22 09:50:56

程序員

2011-12-12 10:24:50

設計

2014-02-18 10:59:52

nftablesLinux 3.13

2017-11-21 10:15:00

2021-04-20 10:31:29

WhatsAppAndroid惡意軟件

2017-11-23 11:56:00

2014-04-30 15:44:11

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产黄色av | 91精品国产综合久久久久久 | 先锋资源站 | 久久久久无码国产精品一区 | 成人在线免费视频 | 91av在线影院 | 亚洲精品免费在线 | 一区二区三区久久久 | 成人影院在线观看 | 成人免费一区二区三区视频网站 | 久久久www成人免费无遮挡大片 | 一级片视频免费观看 | a天堂在线| 日韩欧美在线观看一区 | 午夜精品一区二区三区免费视频 | 成人免费在线观看 | 国产成人免费在线 | 日韩视频在线免费观看 | 男插女下体视频 | 久久久久国产成人精品亚洲午夜 | 夜久久 | 欧美 日韩 在线播放 | 欧美在线一区二区视频 | a免费视频 | 日韩一区二区三区视频 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 韩国主播午夜大尺度福利 | 国产成人在线看 | 一二区视频 | 九九久久这里只有精品 | 国产日韩欧美一区 | 中文字幕视频在线 | 国产精品一区二区三 | 成人在线观看免费 | 国产午夜精品久久久久 | 日中文字幕在线 | 日韩有码一区 | 欧美一区二区在线 | 日本一区二区三区在线观看 | 中文字幕第一页在线 | www.蜜桃av.com|