在Android中全局变量的声明

5

我是Android开发的新手,我正在通过SAX解析器解析一个XML文件,并将解析后的数据存储到一个字符串中。现在我需要在另一个类中使用该字符串,因此我需要知道如何在新类中调用该解析器。 提前感谢您的帮助。


请注意,全局数据是一个不好的想法,除非它是常量。 - the_drow
不了解你的类层次结构更详细信息,我想知道有什么阻止你使用基本的getter方法? - harism
5个回答

9

我总是创建一个包含所有全局变量的类,然后将其命名为 "Constants.java"。

final public class Constants//final to prevent instantiation
{
    public static final String SOME_STRING = "0.04";
    public static final int SOME_NUMBER = 5;
    public static final float METERS_PER_MILE = 1609.344f;

    //private constructor to prevent instantiation/inheritance
    private Constants()
    {
    }
}

如果您想在代码中使用其中之一,请确保导入该类并使用:

Constants.SOME_NUMBER


(注意:本文中的HTML标签已被保留,不应翻译)

为什么不使用接口呢? - ernazm
因为“接口是一组具有空方法体的相关方法”。 - Someone Somewhere
尽管 "接口定义也可以定义自动公共静态常量属性",但我认为接口的主要目的是表示一组空方法相关的契约。 - Someone Somewhere

2
你可以使用静态变量,并可以在应用程序的任何地方访问它。
public static int myVar = 1;

你可以通过 ClassName.myVar 来访问它。


2
您可以使用intent传递值。 此外,您可以使用manifest.xml创建全局变量。

1

使用Android应用程序扩展并不是多进程安全的,如此描述: 如何在Android中声明全局变量? 请注意第一个回答。他定义了如何扩展应用程序本身,但指出“这种方法没有简单的方式来持久化全局状态。如果您的应用程序发现这是必要的,您应该使用某种存储;请参阅Android文档以获取各种方法。” 我还看到其他帖子说,在进程之间,这种方法需要稍作修改,但我认为这是可能的。 如果我理解错了,请告诉我...


0

我不确定,但你总是可以使用synchronized关键字。 - Yekmer Simsek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接