日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Notification(二)——PendingIntent的flag导致数据同样的问题

發(fā)布時間:2025/3/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Notification(二)——PendingIntent的flag导致数据同样的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MainActivity例如以下:
package cc.cu;import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; /*** Demo描寫敘述:* 兩個Notification均使用Intent攜帶數(shù)據(jù)時.當收到第一個通知時取出其攜帶的數(shù)據(jù)沒有問題,數(shù)據(jù)準確;* 可是當收到第二個通知時取出其攜帶的數(shù)據(jù)時,竟然發(fā)現(xiàn)是第一個通知攜帶的數(shù)據(jù).* 當時出現(xiàn)這個問題時,第一感覺問題在于* NotificationManager.notify(int id, Notification notification)* 方法里的id值同樣造成的.但將其改動為不同的值后發(fā)現(xiàn)問題依然.* * 后來發(fā)現(xiàn)問題出現(xiàn)于方法:* PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)* 的最后一個參數(shù).該值共同擁有四個常量.最好是使用PendingIntent.FLAG_UPDATE_CURRENT,該值的解釋例如以下:* * Flag indicating that if the described PendingIntent already exists, * then keep it but replace its extra data with what is in this new Intent* * 假設PendingIntent已經(jīng)存在,那么保留它而且僅僅替換它的extra數(shù)據(jù)* * 參考資料:* 1 http://blog.csdn.net/lilu_leo/article/details/8491738* 2 http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT* 3 http://blog.csdn.net/vipzjyno1/article/details/25248021* Thank you very much* 在資料3中對于Notification作了非常全面和具體的介紹.有興趣的能夠看看.* * 備注說明:* 測試環(huán)境Android2.3.6**/ public class MainActivity extends Activity {private Context mContext;private Button mFirstButton;private Button mSecondButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();// 取出通知攜帶的數(shù)據(jù)if (this.getIntent().getExtras() != null) {String data = this.getIntent().getExtras().getString("testData");System.out.println("得到通知傳過來的數(shù)據(jù):" + data);}}private void init() {mContext = this;mFirstButton = (Button) findViewById(R.id.sendFirstNotificationButton);mFirstButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {sendFirstNotification();}});mSecondButton = (Button) findViewById(R.id.sendSecondNotificationButton);mSecondButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {sendSecondNotification();}});}// 發(fā)送通知private void sendFirstNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自first的數(shù)據(jù)");// PendingIntent pendingIntent=PendingIntent.getActivity(mContext, 0,intent, 0);//error codePendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);notification.icon = R.drawable.ic_launcher;notification.defaults = Notification.DEFAULT_SOUND;notification.flags |= Notification.FLAG_AUTO_CANCEL;notification.tickerText = "第一個通知";notification.setLatestEventInfo(mContext, "通知1", "來自第一個button觸發(fā)的通知",pendingIntent);NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(0, notification);}// 發(fā)送通知private void sendSecondNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自second的數(shù)據(jù)");// PendingIntent pendingIntent=PendingIntent.getActivity(mContext, 0,intent, 0);//error codePendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);notification.icon = R.drawable.ic_launcher;notification.defaults = Notification.DEFAULT_SOUND;notification.flags |= Notification.FLAG_AUTO_CANCEL;notification.tickerText = "第二個通知";notification.setLatestEventInfo(mContext, "通知2", "來自第二個button觸發(fā)的通知",pendingIntent);NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(1, notification);}}
main.xml例如以下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/sendFirstNotificationButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="100dip"android:text="發(fā)送第一個通知" /><Buttonandroid:id="@+id/sendSecondNotificationButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="200dip"android:text="發(fā)送第二個通知" /></RelativeLayout>

總結(jié)

以上是生活随笔為你收集整理的Notification(二)——PendingIntent的flag导致数据同样的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。