Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在具有多个活动的android应用程序中,在收到意图时,建议采用什么样的设计来设置配置?_Android_Android Intent_Broadcastreceiver_Android Activity - Fatal编程技术网

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

在具有多个活动的android应用程序中,在收到意图时,建议采用什么样的设计来设置配置?,android,android-intent,broadcastreceiver,android-activity,Android,Android Intent,Broadcastreceiver,Android Activity,我有一个Android应用程序,其中有多个活动,每个活动对应不同的屏幕/视图,它们实际上是顺序的(在某种意义上,一个内部活动在某个事件后启动另一个) 在这种情况下,我希望能够从我的应用程序中接收设置某些配置的外部意图(所有活动的配置可能都是相同的),但我不希望这改变当前视图 我该怎么做?有没有办法将广播接收器绑定到应用程序本身而不是特定的活动 广播接收器不是直接连接到活动上吗?查看[Android意向教程](http://developer.android.com/guide/component

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

在这种情况下,我希望能够从我的应用程序中接收设置某些配置的外部意图(所有活动的配置可能都是相同的),但我不希望这改变当前视图

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

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


如果我将其直接附加到应用程序下的类(在清单上),这是否意味着代码将被执行,前台活动(视图)将不会更改?

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

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

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

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

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

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

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

如果您不想在共享首选项中持久化conf对象,那么可以使用conf类的静态对象,该对象可以在应用程序类中初始化

例如

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

要设置哪种配置?请举例说明该配置是我的应用程序的内部配置。您可以在应用程序上考虑一个变量,因此该变量作为有关活动的全局变量,其中一些活动将使用该变量。广播接收器不直接与活动连接。甚至可以有一个只有接收器的应用程序。共享首选项或应用程序全局变量不是问题所在。主要的问题是,我在哪里连接广播接收器?我需要从意图中获取配置,但我希望保持当前活动(视图),不管它是什么,都可以…广播接收器始终与应用程序连接。它们可以在应用程序上下文中注册。您可以只拥有一个单独的接收方文件。广播接收器在不同的线程中运行。它不在活动线程中运行。
  public class BaseClass extends Application {
  public static Conf conf ;
  ....
  }