私に学んで

4043 ワード

Notificationは通知の意味として理解できます.通知欄に表示されます.例えば、メールが来ました.
Notificationを使用するには、次の3つのステップがあります.
1.NotificationManagerのオブジェクトの作成
2.Notificationのプロパティの設定
3.Notifyを使用して通知を送信
 
例:通知を発行する
 1     /**

 2      *   notify

 3      */

 4     private void createNotify() {

 5         //   NotificationManager   

 6         NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

 7         //   notifyCation  

 8         Notification notify = new Notification();

 9         notify.icon = R.drawable.icon_reply;//    

10         notify.when = System.currentTimeMillis();//

11         notify.tickerText = "hi,   ";//    

12         notify.flags = Notification.FLAG_AUTO_CANCEL;//          

13         Intent intent = new Intent(this, NextActivity.class);

14         PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,

15                 PendingIntent.FLAG_UPDATE_CURRENT);

16         notify.setLatestEventInfo(this, "    ", "    ", pIntent);

17         manager.notify(10, notify);//    ,10     id

18     }

この方法では,ボタンであるイベントを呼び出し,プログラムを実行した後,ボタンをクリックすると通知が送信されるように設定できる.レイアウトファイルと関連するコードはここでは作成されていません.
 
PendingIntentはIntentのパッケージであり、ここではIntentを起動する説明であり、PendingIntent.getActivityが返すPendingIntentは
このPendingIntentインスタンスのIntentは、Activityを起動するためのIntentです.
PendingIntent.getActivityのパラメータは、Context、送信者のリクエストコード(0を記入可能)、システム送信用のIntent、フラグビットの順です.
そのうちPendingIntent.FLAG_UPDATE_CURRENT  この記述のPendingIntentが既に存在する場合、既に存在するPendingIntentのExtraデータを新しいPendingIntentのExtraデータに変更することを示す.
 IntentとPendingIntentの違い:
Intent:私が何をするかをシステムに伝え、このIntentに基づいて対応することを意図しています.startActivityはメッセージの送信に相当し、Intentはメッセージの内容である.
PendingInent:Inentを包装し、InentはstartActivity、startService、sendBroadcastを直接使用して作業を開始する意図です.
場合によっては、startActivity、startServices、sendBroadcastを直接呼び出すのではなく、プログラムまたはシステムが条件に達してからIntentを送信することはできません.
ここのNotificationのように、ユーザーがNotificationをクリックすると、ActivityのIntentがシステムから発行されます.だから私たちが何らかの方法でシステムに伝える必要がなければ、システムはstartActivityを使うことを知らないので、
startServiceはsendBroadcastでIntentを起動する(もちろん他の「説明」もある)ため、ここではPendingIntentが必要です.