我如何进行BaseActivity或类似的操作,这样我只需要做一次Internet连接BroadcastReceiver?

问题描述 投票:-3回答:1

我目前在每项活动中都有自己的广播接收器,但是如果有10项或以上的活动,这确实令人不快。现在我的问题是:

我该如何执行BaseActivity或类似的操作,这样我只需要做一次Internet连接BroadcastReceiver?还是我完全错了?

java android broadcastreceiver android-databinding
1个回答
1
投票

您可以创建一个从AppCompatActivity扩展的Abstract类,并且所有活动将从现在开始从该基类扩展,在那里您可以在适当的生命周期方法中注册/注销接收者,还可以创建一个Abstract方法并强制其他方法实施活动。

在每个活动中,当您收到通知时想要执行的操作将基于该抽象方法实现,当您收到广播时,可以从baseActivity调用它。

或者,如果您使用的是Kotlin,也可以使用DSL,那将很酷。

您可以在Baseactivity中创建一个函数变量,以及一个传递函数的方法-

val onInternetConnect : (() -> Unit)? = null

onConnect(block : (() -> Unit)){

onInternetConnect = block

}

每个活动的[中的内容,您可以这样-

onConnect { Your Code Goes Here }
并且从BaseActivity,在收到广播时调用它-

onInternetConnect?.invoke()


0
投票

您可以创建一个从AppCompatActivity扩展的Abstract类,并且所有活动将从现在开始从该基类扩展,在那里您可以在适当的生命周期方法中注册/注销接收者,还可以创建一个Abstract方法并强制其他方法实施活动。

在每个活动中,当您收到通知时想要执行的操作将基于该抽象方法实现,当您收到广播时,可以从baseActivity调用它。

或者,如果您使用的是Kotlin,也可以使用DSL,那将很酷。

您可以在Baseactivity中创建一个函数变量,以及一个传递函数的方法-

val onInternetConnect : (() -> Unit)? = null

onConnect(block : (() -> Unit)){

onInternetConnect = block

}

每个活动的[中的内容,您可以这样-

onConnect { Your Code Goes Here }
并且从BaseActivity,在收到广播时调用它-

onInternetConnect?.invoke()

© www.soinside.com 2019 - 2024. All rights reserved.