Notification(二)——PendingIntent的flag导致数据同样的问题
生活随笔
收集整理的這篇文章主要介紹了
Notification(二)——PendingIntent的flag导致数据同样的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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攜帶數據時.當收到第一個通知時取出其攜帶的數據沒有問題,數據準確;* 可是當收到第二個通知時取出其攜帶的數據時,竟然發現是第一個通知攜帶的數據.* 當時出現這個問題時,第一感覺問題在于* NotificationManager.notify(int id, Notification notification)* 方法里的id值同樣造成的.但將其改動為不同的值后發現問題依然.* * 后來發現問題出現于方法:* PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)* 的最后一個參數.該值共同擁有四個常量.最好是使用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已經存在,那么保留它而且僅僅替換它的extra數據* * 參考資料:* 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作了非常全面和具體的介紹.有興趣的能夠看看.* * 備注說明:* 測試環境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();// 取出通知攜帶的數據if (this.getIntent().getExtras() != null) {String data = this.getIntent().getExtras().getString("testData");System.out.println("得到通知傳過來的數據:" + 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();}});}// 發送通知private void sendFirstNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自first的數據");// 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觸發的通知",pendingIntent);NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(0, notification);}// 發送通知private void sendSecondNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自second的數據");// 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觸發的通知",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="發送第一個通知" /><Buttonandroid:id="@+id/sendSecondNotificationButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="200dip"android:text="發送第二個通知" /></RelativeLayout>
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攜帶數據時.當收到第一個通知時取出其攜帶的數據沒有問題,數據準確;* 可是當收到第二個通知時取出其攜帶的數據時,竟然發現是第一個通知攜帶的數據.* 當時出現這個問題時,第一感覺問題在于* NotificationManager.notify(int id, Notification notification)* 方法里的id值同樣造成的.但將其改動為不同的值后發現問題依然.* * 后來發現問題出現于方法:* PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)* 的最后一個參數.該值共同擁有四個常量.最好是使用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已經存在,那么保留它而且僅僅替換它的extra數據* * 參考資料:* 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作了非常全面和具體的介紹.有興趣的能夠看看.* * 備注說明:* 測試環境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();// 取出通知攜帶的數據if (this.getIntent().getExtras() != null) {String data = this.getIntent().getExtras().getString("testData");System.out.println("得到通知傳過來的數據:" + 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();}});}// 發送通知private void sendFirstNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自first的數據");// 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觸發的通知",pendingIntent);NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(0, notification);}// 發送通知private void sendSecondNotification() {Notification notification = new Notification();Intent intent = new Intent(mContext, MainActivity.class);intent.putExtra("testData", "來自second的數據");// 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觸發的通知",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="發送第一個通知" /><Buttonandroid:id="@+id/sendSecondNotificationButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="200dip"android:text="發送第二個通知" /></RelativeLayout>
總結
以上是生活随笔為你收集整理的Notification(二)——PendingIntent的flag导致数据同样的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php——验证身份证是否合法的函数
- 下一篇: 将ListT集合用DataGridVie