我如何做一个 BaseActivity 或类似的东西,这样我只需要做一次 Internet Connection BroadcastReceiver?
How do I do a BaseActivity or something similar so that I only have to do an Internet Connection BroadcastReceiver once?
我目前在每个 activity 中都有自己的广播接收器,但是对于 10 个或更多活动,这真的很不愉快。现在我的问题是:
如何执行 BaseActivity 或类似的操作,以便我只需执行一次 Internet 连接 BroadcastReceiver?还是我完全错了?
您可以创建一个从 AppCompatActivity 扩展的抽象 Class ,并且您的所有活动都将从这个基础扩展 class 从现在开始您可以 register/unregister你的接收器在适当的生命周期方法中,你也可以创建一个抽象方法并强制其他活动来实现它。
在每个 activity 中,当你收到通知时你想做什么都将在那个抽象方法实现上,当你收到广播时,你会从 baseActivity 调用它。
或者,如果您使用的是 Kotlin,那么您也可以使用 DSL,那会很酷。
你可以在 Baseactivity 中创建一个函数变量,以及一个传递函数的方法 -
val onInternetConnect : (() -> Unit)? = null
onConnect(block : (() -> Unit)){
onInternetConnect = block
}
来自每个 Activity onCreate 你可以这样 -
onConnect {
Your Code Goes Here
}
并且从BaseActivity,当你收到广播时调用它-
onInternetConnect?.invoke()
我目前在每个 activity 中都有自己的广播接收器,但是对于 10 个或更多活动,这真的很不愉快。现在我的问题是:
如何执行 BaseActivity 或类似的操作,以便我只需执行一次 Internet 连接 BroadcastReceiver?还是我完全错了?
您可以创建一个从 AppCompatActivity 扩展的抽象 Class ,并且您的所有活动都将从这个基础扩展 class 从现在开始您可以 register/unregister你的接收器在适当的生命周期方法中,你也可以创建一个抽象方法并强制其他活动来实现它。
在每个 activity 中,当你收到通知时你想做什么都将在那个抽象方法实现上,当你收到广播时,你会从 baseActivity 调用它。
或者,如果您使用的是 Kotlin,那么您也可以使用 DSL,那会很酷。
你可以在 Baseactivity 中创建一个函数变量,以及一个传递函数的方法 -
val onInternetConnect : (() -> Unit)? = null
onConnect(block : (() -> Unit)){
onInternetConnect = block
}
来自每个 Activity onCreate 你可以这样 -
onConnect {
Your Code Goes Here
}
并且从BaseActivity,当你收到广播时调用它-
onInternetConnect?.invoke()