首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个活动中使用处理程序

在多个活动中使用处理程序
EN

Stack Overflow用户
提问于 2012-06-22 20:21:31
回答 2查看 4K关注 0票数 1

我正在开发一个应用程序,它有大约8个活动,以及一个用于连接/接收来自嵌入式蓝牙芯片的数据的类。当我开始时,在我的初始活动中初始化了一个蓝牙对象,其中有一个处理程序接收来自蓝牙对象的消息。

在互联网上闲逛了一段时间后,似乎对我来说最好的想法是把我的类变成一个Application子类。但是,这样做使我不需要在MainMenu中初始化对象,也就不再需要将它传递给处理程序使用的对象。

有没有人知道一种方法来消除对处理程序的需要,以便蓝牙应用程序每次更改它的状态或接收数据时,当前活动都可以访问它?

我使用这种方法的主要问题是,活动不知道蓝牙应用程序何时向其发送消息,应用程序等待并侦听,然后在发生时通知活动。

将处理程序写入MainMenu,让它处理所有不同活动的消息,然后将处理程序从一个活动传递到另一个活动,这是不是一种糟糕的做法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-22 21:08:33

我假设你正在尝试实现以下目标,因为从你的问题中你的最终目标有点不清楚(对不起!):

  1. 您的应用程序有多个活动,但只有一个活动从蓝牙设备接收数据。
  2. 应用程序中的其他活动需要来自蓝牙设备的数据,但不直接从蓝牙设备接收数据。当前您正在通过上述活动提供数据。
  3. 您不希望使用处理程序来实现此目的。

如果我上面的假设是正确的,那么您正在沿着正确的路线前进,但是您可能不想使用Handler。

让一个活动处理与蓝牙设备的所有交互是非常正确的。它简化了事情,并提供了一种更好、更干净的处理蓝牙设备的方式。但是,您需要将这一活动的数据传递给所有其他活动,要实现这一点,您可能需要使用Broadcasts, BroadcastReceivers和Intents。有关概述,请参阅here

但是,如果可以的话,您可能想看看使用LocalBroadcastManager,因为这样可以将任何广播都保留在您自己的应用程序空间内。广播是全球性的,如果您由于安全问题而不需要将数据传递到您自己的应用程序之外,则应避免广播。

最后,您是否考虑过在其他活动中使用Fragments?广播的另一个缺点是存在与其相关的额外开销。如果您将数据保存在应用程序中,那么您可以创建一个由每个片段实现的接口,并且您的主活动仅在当前选择的片段上调用该接口。

票数 5
EN

Stack Overflow用户

发布于 2012-06-22 21:00:21

您可以使用BroadcastReceiver类向您的活动发送广播消息。查看此处http://developer.android.com/reference/android/content/BroadcastReceiver.html

当您将所需的数据放入应用程序类中时,可以将其发送到所需的活动。只需确保活动已注册,即可接收该广播消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11156062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档