10

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

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

我的想法是将我的逻辑DataThread放在 Android Service( DataService) 中。我的问题是 - 活动可以同时绑定到我DataService吗?有没有办法告诉服务仅向特定活动提供数据?

欢迎任何其他想法?

提前致谢。

4

2 回答 2

6

绝对不止一项活动可以绑定到您的服务。您将获得每个绑定的 onBind() 。然后,您的服务将理想地处理与多个活动交互的逻辑,方法是使用服务中的 onBind() 中的 ID 或意图(每个活动的您自己的 ID 作为额外内容)来识别它们。然后,您可以让服务为绑定到它的每个活动生成一个后台线程。

于 2013-11-13T02:02:50.653 回答
4

我通常从 Application 类绑定我的服务,并在应用程序中处理服务之间的通信以及任何活动的 Activity是。

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

从服务更新 UI 比意图更有效的方法?

您可以通过在 onResume 中向 Application 类发送对自身的引用来跟踪“当前处于活动状态”的 Activity(也在上面的示例中进行了说明)。这可以通过从一个公共基类派生您的活动来完成,该基类具有获取您的应用程序类的方法(从 getApplicationContext 转换),并在这个基类的 onResume 中,将自身的 ref 发送到应用程序。然后,您可以通过名称向 DataServiceController 注册活动,例如,仅当当前活动已向控制器注册以接收它们时,才向当前活动发送消息。

于 2010-06-29T15:08:21.617 回答