Jui*_*iCe 1 android bluetooth handler
我正在开发一个应用程序,它有大约 8 个活动,以及一个用于连接到嵌入式蓝牙芯片/从嵌入式蓝牙芯片接收数据的类。当我开始时,在我的初始 Activity 中初始化了一个蓝牙对象,其中有一个从蓝牙对象接收消息的处理程序。
在互联网上闲逛了一段时间后,对我来说,最好的主意似乎是将我的类变成 Application 子类。但是,这样做消除了我在 MainMenu 中初始化对象的需要,这消除了我将它传递给使用的 Handler 的能力。
有谁知道一种消除对处理程序的需求的方法,以便蓝牙应用程序每次更改其状态或接收数据时,当前活动都可以访问它?
我使用这种方法的主要问题是 Activity 不知道蓝牙应用程序何时向它发送消息,应用程序等待并侦听,然后在发生时通知 Activity。
或者
将 Handler 写入 MainMenu,让它处理所有不同活动的消息,然后将 Handler 从 Activity 传递到 Activity 对我来说是不好的做法吗?
我将假设您正在尝试实现以下目标,因为您的问题有点不清楚您的最终目标(对不起!):
如果我的上述假设是正确的,那么您将沿着正确的路线前进,但您可能不想使用 Handler。
让一个活动处理与蓝牙设备的所有交互是非常正确的。它简化了事情并提供了一种更好、更清洁的蓝牙设备处理方式。但是,您需要从这个 Activity 获取数据到所有其他 Activity,为此您可能需要使用Broadcasts、BroadcastReceivers和 Intents。有关概述,请参见此处。
但是,如果可以,您可能想看看使用LocalBroadcastManager,因为这会将任何广播保留在您自己的应用程序空间内。广播是全球性的,如果您出于安全考虑不需要将数据传递到您自己的应用程序之外,则应避免使用广播。
最后,您是否考虑过在其他 Activity 中使用Fragments?广播的另一个缺点是与它们相关的额外开销。如果您将数据保存在您的应用程序中,那么您可以创建一个由您的每个 Fragment 实现的接口,您的主要 Activity 只需在当前选择的 Fragment 上调用该接口。
| 归档时间: |
|
| 查看次数: |
3955 次 |
| 最近记录: |