0

我有一个具有多个活动的 Android 应用程序,其中每个活动对应于不同的屏幕/视图,并且它们实际上是按顺序排列的(从某种意义上说,一个内部活动在某个事件之后启动另一个)。

在这种情况下,我希望能够接收一个外部 Intent,它从我的应用程序中设置一些配置(所有活动可能共有的配置),但我不希望它改变当前视图。

我该怎么做?有没有办法将广播接收器绑定到应用程序本身而不是特定活动?

广播接收器不是直接连接到活动吗?查看 [Android 意图教程] (http://developer.android.com/guide/components/intents-filters.html#npex) 所有的意图过滤器都附加到清单文件中的不同活动。但是查看此 [教程] (http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html),我发现可以在应用程序下直接在清单上声明 Receiver。

如果我将它直接附加到 Application 下的类(在清单上),这是否意味着代码将被执行并且前台活动(视图)不会改变?

4

1 回答 1

0

这里可能会根据您的要求使用不同的设计模式。

如果您想在内存中保留一些持久性信息,那么您可以对整个应用程序使用共享首选项。

您可以拥有一个广播接收器,旨在获取一些包含所有配置值的外部意图。

每次,您可以检查外部配置散列和内部散列(存储在共享首选项中),如果发现一些差异,则可以更新共享首选项。

因此,更好的方法是您可以拥有一个配置类,并且可以将此类对象保存在共享首选项中。

有几种方法可以将对象保存在共享首选项中。

所以,现在在每个活动中,您可以读取 onResume() 中的首选项以应用新配置。

如果您不想在共享首选项中保留 conf 对象,那么您可以拥有 Conf 类的静态对象,并且可以在应用程序类中进行初始化。

例如-

  public class BaseClass extends Application {
  public static Conf conf ;
  ....
  }

http://developer.android.com/reference/android/app/Application.html

因此,应用程序类是那些需要维护全局应用程序状态而不是特定于组件(活动、服务)的人的基类。

于 2013-01-22T15:49:16.847 回答