sendBroadcastAsUser 用來區分不同的使用者。
作為android 的四大基本元件之一的 BroadCast Receiver,是進行程序間通訊的重要手段,幾乎所有的應用都會註冊和傳送各種不同的intent, 那麼有一個問題,你是否瞭解Intent? 作為延伸,我們需要了解一下 sendBroadcast() / sendOrderedBroadcast() / sendStickyBroadcast() 這三個方法的不同。
1)sendBroadcast: 最普通的傳送intent的方式,是一種無序的廣播機制,理論上,所有的接受者同時獲得該intent的訊息, 接受者之間不存在先後順序, 不能截斷/修改intent的資料。 應用普遍使用的就是該方式。
2)sendOrderedBroadcast: 是有序的傳送廣播的機制,所有接受者都可以設定priority , 按照priority 的大小順序進行傳遞, 上一個優先順序的接受者,可以截斷和修改intent裡面的資料。 同時,也可以設定一個最後接收者(總是在最後一個接收到這個intent,用來做一些特定的功能)。
3)sendStickyBroadcast: 是一種粘性廣播。所謂的粘性是指,這個intent 沒有周期限制, 一般的intent 只能傳送給當前已經註冊了這個監聽的receiver,一旦傳送完畢就會失去作用週期,而粘性廣播沒有這個限制,即便後來註冊的intent也可以收到這個廣播。 需要注意的一點是 這種傳送方式不會導致ANR, 因為它沒有傳送時間的限制。
4)android 4.2 之後加入了多使用者,UserHandle.ALL / UserHandle.CURRENT / UserHandle.CURRENT_OR_SELF / UserHandle.OWNER
這就造就了另外一個傳送函式 sendBroadcastAsUser 用來區分不同的使用者。