Registerを使用して、Androidでブロードキャストレシーバーを作成する方法。任意のアドバイス.... Javaでは、ブロードキャストレシーバーとして宣言することで作成できます。ブロードキャストレシーバー機能...それが存在する場合、それを見つけることができず、使用方法もわかりません。
次の方法でそれを行うことができます
アクティビティクラスにブロードキャストレシーバーオブジェクトを作成します。
val broadCastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
when (intent?.action) {
BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged()
BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged()
}
}
}
アクティビティのonCreate()関数にブロードキャストレシーバーを登録する
LocalBroadcastManager.getInstance(this)
.registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))
アクティビティのondestroy関数で登録を解除します
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(broadCastReceiver)
Kotlinの匿名クラス構文は次のとおりです。
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
}
}
BroadcastReceiver Kotlin extension を作成しました。これはどこにでもコピー/貼り付けできます。既に述べた以上のことはしませんが、定型文の一部を減らします。 ????
この拡張機能を使用して、次のように登録/登録解除する必要があります。
private lateinit var myReceiver: BroadcastReceiver
override fun onStart() {
super.onStart()
myReceiver = registerReceiver(IntentFilter(BROADCAST_SOMETHING_HAPPENED)) { intent ->
when (intent?.action) {
BROADCAST_SOMETHING_HAPPENED -> handleSomethingHappened()
}
}
}
override fun onStop() {
super.onStop()
unregisterReceiver(myReceiver)
}