繁体   English   中英

在具有多个活动的android应用程序中收到意图后,用于设置配置的建议设计是什么?

[英]What is the recommended design for setting configurations upon the receipt of an intent in an android application with multiple activities?

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

在这种情况下,我希望能够收到一个外部Intent,该Intent可以从我的应用程序中设置一些配置(对于所有Activity来说可能都是相同的配置),但是我不希望这样来更改当前视图。

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

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

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

在这里,可以根据您的要求使用不同的设计模式。

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

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

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

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

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

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

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

例如-

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

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

因此,对于那些需要维护全局应用程序状态而不是特定于组件(Activity,Service)的用户而言,应用程序类是基类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM