Android 使用者介面—狀態列通知(一)

來源:互聯網
上載者:User

狀態列通知(Status Bar Notifications)

狀態列表徵圖把一個表徵圖添加到系統的狀態列(帶有一個可選的文本提醒訊息),並且還在通知視窗中添加一個通知訊息。當使用者選擇這個通知時,Android系統會觸發一個由通知定義的Intent對象(通常是要啟動一個Activity)。你也能夠在裝置上給通知配置聲音、震動、螢幕閃爍等效果來提醒使用者。

狀態列通知應該用於後台服務需求使用者響應有關事件的情境中。為了接受使用者的互動,後台服務不應該自己啟動Activity。相反,服務應該建立一個狀態列通知,當使用者選擇這個通知時,才啟動對應的Activity。

圖1在狀態列的左側顯示一個帶有通知表徵圖的狀態列。

圖1.帶有通知的狀態列

圖2顯示通知視窗中的通知訊息。

圖2.通知視窗

基礎

Activity或Service對象能夠初始化一個狀態列通知。因為Activity僅能夠在前台運行且視窗有焦點時才能執行操作,所以通常是由Service對象來建立狀態列通知。這種方式下,當使用者正在使用另一個應用程式或裝置休眠時,通知也能夠從後台建立。要建立通知,必須使用兩個類:Notification和NotificationManager。

使用Notification類的一個執行個體來定義狀態列通知的屬性,如狀態列表徵圖、通知訊息,以及另外的如播放聲音的設定等。NotificationManager對象是Android系統的服務,它執行和管理所有狀態列通知。你不需要直接執行個體化NotificationManager對象。為把通知發給它,必須用getSystemService()方法獲得NotificationManager對象的引用,然後再想要通知使用者的時候,用notify()方法把Notification對象傳遞給它。

以下是建立一個狀態列通知的方法:

1.  獲得NotificationManager對象的引用:

String ns = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

2.  初始化Notification對象:

int icon = R.drawable.notification_icon;

CharSequence tickerText = "Hello";

long when = System.currentTimeMillis();

Notification notification = new Notification(icon, tickerText, when);

3.  定義通知訊息和PendingIntent對象:

Context context = getApplicationContext();

CharSequence contentTitle = "My notification";

CharSequence contentText = "Hello World!";

Intent notificationIntent = new Intent(this, MyClass.class);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

4.  把Notification對象傳遞給NotificationManager:

privatestaticfinalint HELLO_ID
=1;

mNotificationManager.notify(HELLO_ID,
notification);

到此為止,使用者已經收到通知了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.