代码之家  ›  专栏  ›  技术社区  ›  Soumya Simanta

Android服务与多个活动交互

  •  10
  • Soumya Simanta  · 技术社区  · 14 年前

    我正在尝试重构/重新设计一个Android应用程序。目前,我有一个用户界面活动( Activity 1 )创造了一个 DataThread . 此线程负责网络I/O,并通过 handler .

    现在,我想添加另一个活动(带视频的新用户界面屏幕)- Activity 2 . 活动1 仍然是主要的活动。 活动2 将在用户单击按钮时调用 活动1 . 活动2 的数据也来自 数据线程 .

    我的想法是把我的逻辑 数据线程 安卓系统内部 Service ( DataService )我的问题是-能比活动更多吗? 绑定 对我 数据服务 同时呢?是否有方法告诉服务仅向特定活动提供数据?

    欢迎有其他想法吗?

    提前谢谢。

    2 回复  |  直到 10 年前
        1
  •  4
  •   Community CDub    8 年前

    我通常从应用程序类绑定我的服务,并在处理服务和活动活动之间的通信的应用程序中有某种类型的控制器类(如“中介器”,我想……不确定所有这些模式是如何命名的)。

    这将涉及编写自己的应用程序类并告诉清单使用这个类。我在前一篇文章中详细介绍了这个过程:

    More efficient way of updating UI from Service than intents?

    您可以通过在OnCutlook中向应用程序类发送对自身的引用来跟踪“当前活动”活动(也在上面的示例中解释)。这可以通过从具有获取应用程序类(从GetApplicationContext强制转换)方式的公共基类派生活动来实现,并且在此基类“onResume”中,将自身的引用发送到应用程序。然后,您可以按名称在DataServiceController中注册活动,并且仅当当前活动在控制器中注册以接收它们时才向其发送消息。

        2
  •  6
  •   Edmund Chang    11 年前

    当然,多个活动可以绑定到您的服务。您将为每个绑定的对象获取onbind()。然后,您的服务将理想地处理与多个活动交互的逻辑,方法是使用服务中onbind()中的ID或意图(将每个活动的ID作为附加项)来标识它们。然后,您可以让服务为绑定到它的每个活动生成一个后台线程。