【发布时间】:2022-01-25 08:48:26
【问题描述】:
我有一个问题。我在每个活动中都有 2 个活动,我初始化广播接收器以获取 Internet 连接更改。收到更改后,我会通过在屏幕上显示一些文本来通知用户。
为了不多次写代码,我创建了继承自AppCompatActivity的BroadcastActivity。
现在我将使用 super() 的视图传递给 BroadcastActivity 并使用视图进行操作(更改文本、可见性等)。
问题是:这样做是最佳做法还是有更优雅的解决方案?以及是否会导致内存泄漏?
感谢您的帮助!
BroadcastActivity 示例
open class BroadcastActivity : AppCompatActivity(), OnConnectionChangeListener {
//some code
}
以及活动示例(二级活动结构类似这样)
public class MainActivity extends BroadcastActivity{
//some code
}
附: BroadcastActivity 写在 Kotlin 上,MainActivity 写在 Java 上。
附: 2 目前我无法切换到单一活动并寻求临时解决方案。
【问题讨论】:
-
Is it best practice to do so or is there a more elegant solution?不要使用多个活动。有一个带有片段的活动。您的活动可以处理这些类型的需求,然后每个片段只处理您需要它们做的任何事情,但是您可以使用这种方法更好地共享数据 -
@a_local_nobody 目前我无法切换到单个活动并寻找解决方法。我还修改了问题以添加此说明。谢谢你。
-
我对监听 Internet 连接变化不太熟悉,但您或许可以将该代码移至 Application 类?
-
@IvoBeckers yip,这也是个好建议
-
真的是离题了,因为您只需将 BroadcastReceiver 提取到它自己的类中,然后将其与
activityLifecycle挂钩。
标签: java android kotlin inheritance