0

我有许多 AsyncTasks,它们的所有doInBackground方法都这样做:

Socket s = new Socket("12.345.67.89", 5555);    

我想设置一个它们都可以访问的全局变量,因此当我更改位置/IP 时,我不必梳理所有类文件并更改每个 IP 地址。

在我的脑海中,我想创建一个名为的类GlobalInfo,其中包含我可能需要共享的所有(静态?)变量,然后在每次doInBackground调用中:

GlobalInfo derp = new GlobalInfo();
GlobalInfo.getIp();

但是有没有比我每次都实例化一个新类更好的方法呢?

4

5 回答 5

2

如果您需要这样的东西,我建议您创建一个实用程序类(如您所写),例如:

public static final HOST_ADDRESS = "12.345.67.89";

然后在您的所有任务(甚至所有类)中,您可以像这样使用它(不需要任何实例化):

MyUtilityClass.HOST_ADDRESS

干杯,

于 2013-02-13T11:18:40.067 回答
0

创建一个静态类

public class GlobalInfo {
    public static final String IP_ADDRESS = "123.123.123.123";

}

并通过

 Socket s = new Socket(GlobalInfo.IP_ADDRESS, 5555); 

或者

import static GlobalInfo.*;

Socket s = new Socket(IP_ADDRESS, 5555);

因为它的静态创建只发生一次。

于 2013-02-13T11:19:53.317 回答
0

您可以创建一个常量类,并将该类的成员设为静态,这样您就不需要每次都创建一个新对象。

就像是:

public class C {
    public static final String IP = "12.345.67.89";
    public static final int PORT = 5555;
}

然后使用:

Socket s = new Socket(C.IP, C.PORT);    
于 2013-02-13T11:20:05.770 回答
0

只需使用全局静态常量:

public class GlobalInfo {
    public static final String IP_ADDRESS = "12.345.67.89";
    public static final int PORT = 5555;

    private GlobalInfo(){}
}

然后,您的代码变为:

Socket s = new Socket(GlobalInfo.IP_ADDRESS, GlobalInfo.PORT);
于 2013-02-13T11:20:45.863 回答
0

所有其他答案都是正确的,但我个人选择创建一个包含内容的 XML 文件

<string name="server_ip">192.168.1.100</string>

然后简单地做

getString(R.string.server_ip)

这样,您就可以将配置设置与代码分开。

于 2013-02-25T22:06:15.397 回答