有没有办法创建一个控制实例来控制我的应用程序的几个活动?

时间:2012-10-03 11:42:26

标签: android architecture

我在一个有几个开发人员的项目上工作。 我们致力于一个相当大的应用程序。 每个开发人员都有几个活动,可以看作是整个主应用程序的子应用程序。

我确实知道,这可能不是最好的设计,但它存在,我们必须以某种方式处理它。

现在的主要问题是,我们需要一个主服务器,它始终处于活动状态并检查I / O等,并且可以为每个子应用程序/活动提供状态更改。像“我们刚刚失去了互联网连接”等等。

现在,该master是一个单例,它首先由启动器活动实例化,并且每个活动/子应用程序都可以通过传递适当的接口来注册,具体取决于活动想要接收的更新。

这是有效的,但感觉不对,因为单身人士需要上下文来访问系统资源以确定系统状态,如互联网或gps。如果单身人士被OS杀死,那么简单的“getInstance”就不会有太大的好处,因为单身人士会以某种方式获得一个上下文。我已经阅读了有关扩展Application类并在那里创建静态成员上下文的内容,但是这个变量必须是volatile,如果整个应用程序处于某个restart-after-crash / kill状态,它可能会返回null。感觉不安全。

此外,还应该有可能主人以某种方式打开用户对话框以向用户显示警告等。这些警告应该在整个应用程序中看起来相同,并且没有开发人员应该担心它突然弹出的时间或原因。现在,这些消息显示为覆盖所有内容的自定义Toast。当然,他们需要上下文,如果应用程序即将关闭,则可能存在问题。

总而言之,这就是我们所处的混乱,我正在寻找解决方案。

那么我如何创建一个安全的主对象或活动(甚至是服务?!),它可以将信息传递给不同的活动并发布警告等(甚至可能有能力关闭活动或者至少命令它们关闭自己无需注册can_close接口)。

应该是安全的,如果在崩溃后android只重新启动活动的活动,它会以某种方式重新启动或至少拥有/提供与以前相同的信息。

每个想法都是受欢迎的,但应用程序的彻底检修是不可能的(缺乏时间和人力)

2 个答案:

答案 0 :(得分:3)

以下是一些想法:

  1. 为您需要执行的所有监控创建Service组件。 如果我理解正确,只有在需要时才需要此服务 一些活动正在运行。所以你可以把它变成bound 服务。在开始时,让所有活动bind加入此服务 当他们关闭时解除绑定。该服务将在以下时启动 第一项活动是绑定。
  2. 为您的所有活动创建基类。您可以在此处编写所有常用代码。例如绑定和交换消息的代码 与主服务。该类还可以包含实用程序方法 用于通知用户等。因此所有活动都将使用相同的方法 通知。
  3. 对于用户通知,您可以使用Status Bar Notification或创建可以捕获,聚合的Fragment 并显示通知。你可以有一个共同的菜单项 在Activity Activity类中实现,以显示/隐藏此Fragment。 如果您使用状态栏通知,请确保使用一个聚合 您的应用通知。否则,可能会有不同的活动 在状态栏中创建一个混乱。

答案 1 :(得分:0)

我想一个解决方案就是创建一个充当主服务器的服务。 你将不得不让它独立于不同的活动运行(但是如果不再使用该应用程序,你不要忘记管理自己以完全关闭它,你不想杀死你的客户电池)。 但是,服务无法在界面上执行操作,因此您可能需要向活动广播消息以命令他们打开对话框。

最后的想法:Toast是好的,但阻止界面的弹出窗口非常糟糕,特别是在移动设备上。

相关问题