#android#通知Notification


什麼是通知(Notification):

當某個app希望向用戶發出一些提示性信息,而又不在前臺運行時,可以藉助通知實現。

發出一條通知後,手機最上方狀態欄會顯示一個通知的圖標,下拉狀態欄可以看到通知的詳細內容。


通知的基本用法:

通知可以在活動Activity 廣播接收器Receiver服務Service 中創建。

但主要在Receiver和Service中創建,因爲一般只有當程序進入到後臺時,我們才需要使用通知。


使用通知的詳細步驟:

首先需要NotificationManager對通知進行管理:調用Context類的getSystemService()方法獲取NotificationManager對象。

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

得到NotificationManager後,我們需要創建Notification對象。這個對象存儲通知所需的各種信息。

Notification的有參構造函數接收三個參數:

1.通知的圖標;

2.ticker內容(它會在系統狀態欄一閃而過)

3.指定通知被創建的時間,毫秒爲單位。

Notification notification = new Notification(R.drawable.a, "this is ticker text",System.currentTimeMillis());


創建好Notification對象後,我們需要對它的佈局進行設定:

Notification的setLatestEventInfo()方法接收4個參數,分別爲:

1.Context

2.Title

3.Message

4.暫時傳入null,更多內容見本篇下面PendingIntent。

notification.setLatestEventInfo(this, "title", "text", null);

最後一步,調用NotificationManager的notify()方法就可以讓通知顯示出來啦!

notify()方法接收兩個參數:

1.id,int類型參數

2.Notification對象。

notificationManager.notify(1, notification);

============================快樂的分割線========================================


在這裏雖然我們的通知創建好了,但是卻發現點擊是沒有反應的!

如果你用過Android手機,你一定覺得這是無法忍受的事情。

接下來我們爲通知實現點擊效果吧。


新的概念:PendingIntent

PendingIntent與Intent有些類似。它們都可以去指明某個“意圖”,都可以用來啓動活動,啓動服務,發送廣播等。不同的是,Intent傾向於立即執行某個動作,而PendingIntent傾向於在某個合適的時機去執行某個動作。所以也可以把PendingIntent理解爲延時執行的Intent。


PendingIntent的用法:

它主要提供了幾個靜態方法來獲得PendingIntent的實例,根據需求選擇getActivity(),getBroadcast()還是getService().

這幾個方法接收的參數是相同的:

1.Context

2.第二個參數通常用不到,傳入0即可

3.Intent對象,通過這個對象構建出PendingIntent的意圖。

4.確定PendingIntent的行爲,有以下幾種值:

FLAG_ONE_SHOT;FLAG_NO_CREATE;FLAG_CANCEL_CURRENT;FLAG_UPDATE_CURRENT

完整用法:

   NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(R.drawable.abc_btn_default_mtrl_shape, "this is ticker text",
                System.currentTimeMillis());
        Intent intent = new Intent(MainActivity.this, NotificationActivity.class);
        PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        notification.setLatestEventInfo(this, "title", "text", pi);
        notificationManager.notify(1, notification);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章