<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                通知信息是狀態欄中最常用的功能之一。根據用戶是否拉下下拉卷簾,通知信息表現為一個位于狀態欄的圖標,或在下拉卷簾中的一個條目。另外,通知信息還可以在其添加入狀態欄之時發出聲音,以提醒用戶注意查看。通知信息即可以表示一條事件,如新的短消息到來、出現了一條未接來電等,也可以用來表示一個正在后臺持續進行著的工作,如正在下載某一文件、正在播放音樂等。 #### 1.通知信息的發送 任何使用者都可以通過NotificationManager所提供的接口向狀態欄添加一則通知信息。通知信息的詳細內容可以通過一個Notification類的實例來描述。 Notification類中包含如下幾個用于描述通知信息的關鍵字段。 - icon,一個用于描述一個圖標的資源id,用于顯示在狀態欄之上。每條通知信息必須提供一個有效的圖標資源,否則此信息將會被忽略。 - iconLevel,如果icon所描述的圖標資源存在level,那么iconLevel則用于告知狀態欄將顯示圖標資源的那一個level。 - number,一個int型變量用于表示通知數目。例如,當有3條新的短信時,沒有必要使用三個通知,而是將一個通知的number成員設置為3,狀態欄會將這一數字顯示在通知圖標上。 - contentIntent,一個PendingIntent的實例,用于告知狀態欄當在下拉卷簾中點擊本條通知時應當執行的動作。contentIntent往往用于啟動一個Activity以便讓用戶能夠查看關于此條通知的詳細信息。例如,當用戶點擊一條提示新短信的通知時,短信應用將會被啟動并顯示短信的詳細內容。 - deleteIntent,一個PendingIntent的實例,用于告知狀態欄當用戶從下拉卷簾中刪除本條通知時應當執行的動作。deleteIntent往往用在表示某個工作正在后臺進行的通知中,以便當用戶從下拉卷簾中刪除通知時,發送者可以終止此后臺工作。 - tickerText,一條文本。當通知信息被添加時,狀態欄將會在其上逐行顯示這條信息。其目的在于使用戶無需進行卷簾下拉操作即可從快速獲取通知的內容。 - fullScreenIntent,一個PendingIntent的實例,用于告知狀態欄當此條信息被添加時應當執行的動作,一般這一動作是啟動一個Activity用于顯示與通知相關的詳細信息。fullScreenIntent其實是一個替代tickerText的設置。當Notification中指定了fullScreenIntent時,StatusBar將會忽略tickerText的設置。因為這兩個設置的目的都是為了讓用戶可以在第一時間了解通知的內容。不過相對于tickerText,fullScreenIntent強制性要明顯得多,因為它將打斷用戶當前正在進行的工作。因此fullScreenIntent應該僅用于通知非常重要或緊急的事件,比如說來電或鬧鐘。 - contentView/bigContentView,RemoteView的實例,可以用來定制通知信息在下拉卷簾中的顯示形式。一般來講,相對于contentView,bigContentView可以占用更多空間以顯示更加詳細的內容。狀態欄將根據自己的判斷選擇將通知信息顯示為contentView或是bigContentView。 - sound與audioStreamType,指定一個用于播放通知聲音的Uri及其所使用的音頻流類型。在默認情況下,播放通知聲音所用的音頻流類型為STREAM\_NOTIFICATION。 - vibrate,一個float數組,用于描述震動方式。 - ledARGB/ledOnMS/ledOffMS,指定當此通知被添加到狀態欄時設備上的LED指示燈的行為,這幾個設置需要硬件設備的支持。 - defaults,用于指示聲音、震動以及LED指示燈是否使用系統的默認行為。 - flags,用于存儲一系列用于定制通知信息行為的標記。通知信息的發送者可以根據需求在其中加入這樣的標記:FLAG\_SHOW\_LIGHTS要求使用LED指示燈,FLAG\_ONGOING\_EVENT指示通知信息用于描述一個正在進行的后臺工作,FLAG\_INSISTENT指示通知聲音將持續播放直到通知信息被移除或被用戶查看,FLAG\_ONLY\_ARLERT\_ONCE指示任何時候通知信息被加入到狀態欄時都會播放一次通知聲音,FLAG\_AUTO\_CANCEL指示當用戶在下拉卷簾中點擊通知信息時自動將其移出,FLAG\_FOREGROUND\_SERVICE指示此通知用來表示一個正在以foreground形式運行的服務。 - priority,描述了通知的重要性級別。通知信息的級別從低到高共分為MIN(-2)、LOW(-1)、DEFAULT(0)以及HIGH(1)四級。低優先級的通知信息有可能不會被顯示給用戶,或顯示在通知列表中靠下的位置。 在隨后的討論中將會詳細介紹這些信息如何影響通知信息的顯示與行為。 當通知信息的發送者根據需求完成了Notification實例的創建之后,便可以通過NotificationManager.notify()方法將通知顯示在狀態欄上。 notify()方法要求通知信息的發送者除了提供一個Notification實例之外,還需要提供一個字符串類型的參數tag,以及int類型的參數id,這兩個參數一并確定了信息的意圖。當一條通知信息已經被提交給NotificationManager.notify()并且仍然顯示在狀態欄中時,它將會被新提交的擁有相同意圖(即相同的tag以及相同的id)通知信息所替換。 參考NotificationManager.notify()方法的實現: **NotificationManager.java-->NotificationManager.notify()** ``` public void notify(String tag, int id,Notification notification) { int[]idOut = new int[1]; // **① 獲取NotificationManagerService的Bp端代理** INotificationManager service = getService(); // **② 獲取信息發送者的包名** Stringpkg = mContext.getPackageName(); ...... try { // **③ 將包名、tag、id以及Notification實例一并提交給NotificationManagerService** service.enqueueNotificationWithTag(pkg, tag, id, notification, idOut, UserHandle.myUserId()); } catch(RemoteException e) {......} } ``` NotificationManager會將通知信息發送給NotificationManagerService,并由NotificationManagerService對信息進行進一步處理。注意Notification將通知發送者的包名作為參數傳遞給了NotificationManagerService。對于一個應用程序來說,tag與id而這一起確定了通知的意圖。由于NotificationManagerService作為一個系統服務需要接受來自各個應用程序通知信息,因此對NotificationManagerService來說,確定通知的意圖需要在tag與id之外再增加一項:通知發送者的包名。因此由于包名的不一樣,來自兩個應用程序的具有相同tag與id的通知信息之間不會發生任何沖突。另外將包名作為通知意圖的元素之一的原因出于對信息安全考慮。 而將一則通知信息從狀態欄中移除則簡單得多了,NotificationManager.cancel()方法可以提供這一操作,它接受tag、id作為參數用于指明希望移除的通知所具有的意圖。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看