从应用程序中的任何位置访问变量(Android)

时间:2012-05-14 20:17:07

标签: android object

是否可以在起始活动中创建变量(例如:活动1中的Book类) 并且可以在应用程序的任何地方使用它(例如,活动3,4和5中的Book类)而不实际传递它。

我在问,因为我的xml处理程序创建了一系列对象,因为它在对对象进行任何更改后也会更新xml文件。

2 个答案:

答案 0 :(得分:4)

您可以创建静态变量。只要声明它具有适当的访问权限(例如public),它就可以直接用于同一进程中的任何活动。 (这将是默认设置;您需要做额外的工作才能将活动纳入单独的流程。)

将这些全局变量分成单独的类是很常见的。

但是,请注意,如果您的应用程序被推送到后台,则该进程可能会被终止并重新创建。在这种情况下,存储在静态变量中的任何数据都将丢失。替代方案包括使用SharedPreferences,数据库或ContentProvider。

答案 1 :(得分:1)

实现一个类,例如名为GlobalVariables的类,它扩展了Application。

public class GlobalVariables extends Application

在AndroidManifest.xml中,在应用程序标记中执行此操作:

<application android:label="@string/YourAppName" android:icon="@drawable/YourIcon"
                 android:name=".activities.GlobalVariables.">

不要忘记声明类的包路径(类似于将活动添加到清单文件)。

然后,您可以从应用程序的任何位置访问此类及其变量或方法。在任何Activity的onCreate方法中执行此操作:

GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();

从应用程序扩展的类(例如我们的GlobalVariables)将在应用程序启动时创建,并且在应用程序被销毁之前一直可用。

您可以在GlobalVariables类中拥有HashMap或其他可存储所需变量的位置。将第一个Activity中的变量推送到GlovalVariables,然后从第二个槽中将变量拉到GlobalVariables。像这样(再次):

GlobalVariables globalVariables = (GlobalVariables) getApplicationContext();