iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
0
Software Development

英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康系列 第 25

Android Kotlin 實作 Day 16:PushMessaging(中)(LocalBroadcastManager+BroadcastReceiver)

<< 接續上篇

Method

LocalBroadcastManager

用來管理及發送廣播

  • getInstance

    實例化出 LocalBroadcastManager

    getInstance (context: Context)

    • context:用來實例化出 LocalBroadcastManager 的 context
    var broadcast= LocalBroadcastManager.getInstance(this)
    
  • sendBroadcast

    發送廣播

    sendBroadcast (intent: Intent)

    • intent:要執行的廣播 Intent
    fun sendBroadcast(message: String?) {
        val intent = Intent("MyMessage") // "MyMessage" 為自定義的 Intent action 名稱
        intent.putExtra("message", message)
        broadcast.sendBroadcast(intent)
    }
    
  • registerReceiver

    註冊要接收特定廣播的廣播接收器

    registerReceiver (receiver: BroadcastReceive, filter: IntentFilter)

    • reciever:要接收該特定廣播的接收器實例

    • filter:指定要接收的廣播 Intent action 名稱

    val reciever = Reciever(this)  // Reciever 為自定義的廣播接收器類別
    
    override fun onStart() {
        super.onStart()
        LocalBroadcastManager.getInstance(this).registerReceiver(reciever, IntentFilter("MyMessage"))
    }
    
  • unregisterReceiver

    取消註冊並刪除已被註冊過的廣播接收器

    unregisterReceiver (receiver: BroadcastReceiver)

    override fun onStop() {
        super.onStop()
        LocalBroadcastManager.getInstance(this).unregisterReceiver(reciever)
    }
    

BroadcastReceiver

用來接收廣播的接收器類別

要使用此類別需要先自定義類別繼承此類別

class Receiver(val myContext: Context):BroadcastReceiver() { }
  • onReceive

    接收廣播的方法

    onReceive (context: Context, intent: Intent)

    • context:接收器執行的 Context

    • intent:接收進來的廣播 intent

    override fun onReceive(context: Context?, intent: Intent?) {
        //自定義的方法,用來將接收的廣播用來發出通知
        manager.notify(0, builder.build())
        //自定義的方法,用來將接收的廣播用來彈出對話框
        showDialog(intent)
    }
    

    關於發出通知的功能可以參考 Day 15 內容
    關於彈出對話框的功能將在下篇介紹

查看詳細 Code > GitHub

tags: Android Kotlin LocalBroadcastManager BroadcastReceiver

接下來關於 AlertDialog 及 FCM 發送通知 請參考 下篇>>


上一篇
Android Kotlin 實作 Day 16:PushMessaging(上)(FCM+FirebaseMessagingService)
下一篇
Android Kotlin 實作 Day 16:PushMessaging(下)(AlertDialog+發送 FCM)
系列文
英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康30

尚未有邦友留言

立即登入留言