ブロードキャストレシーバーを使う方法です。
例えば、裏でサービスを動かしておき、何かのタイミングでアクティビティに通知しUIを更新する、、、などの時に使えます。
アクティビティは以下のようにします。
// ブロードキャストレシーバーの登録。受信時のUI更新処理もここで定義する。
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
//UI update here
tv_state.text = "検知中"
tv_explain.text = intent.getStringExtra("message")
}
}
val filter = IntentFilter()
filter.addAction("DO_ACTION")
registerReceiver(receiver, filter)
次にサービスなどで通知を出す方の処理です。
//ブロードキャストの送信。
private fun sendMessage(msg: String?) {
val broadcast = Intent()
broadcast.putExtra("message", msg)
broadcast.action = "DO_ACTION"
baseContext.sendBroadcast(broadcast)
}
通知を出したいタイミングで任意のメッセージと共に上記の関数を呼びます。