Java 如何确定变量的作用域以用作公共静态最终字符串?
此代码位于onCreate中,并从txt文件读取IP地址:Java 如何确定变量的作用域以用作公共静态最终字符串?,java,android,scope,Java,Android,Scope,此代码位于onCreate中,并从txt文件读取IP地址: DefaultHttpClient httpclient = new DefaultHttpClient(); try { HttpGet httppost = new HttpGet("http://readdeo.uw.hu/uploads/IP.txt"); HttpResponse response; response = httpclient.execute(httppost); HttpEntit
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httppost = new HttpGet("http://readdeo.uw.hu/uploads/IP.txt");
HttpResponse response;
response = httpclient.execute(httppost);
HttpEntity ht = response.getEntity();
BufferedHttpEntity buf = new BufferedHttpEntity(ht);
InputStream is = buf.getContent();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line.trim());
// txv.setText(total);
}} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如何使此字符串中的“total”StringBuilder变量用于其他方法
private static final String SERVER_IP = "IP_ADDRESS";
您可以将IP地址添加为某个类中的字段,然后设置其值:
class YourClass {
String mIpAddress;
...
void yourMethod() {
...
ipAddress = total;
}
}
然后,您应该考虑在初始化之前,当其他地方有人访问
mIpAddress
时会发生什么情况。您可以通过处理程序解决此问题
首先,您可以使用以下代码,例如
private int static final RESULT_IP_ADDRESS = 100;
Message msg = mHandler.obtainMessage(RESULT_IP_ADDRESS);
msg.getData().putString("IP_ADDRESS_KEY", total.toString());
msg.sendToTarget();
class MyHandler extends Handler{
@override
public void handleMessage(Message msg) {
switch(msg.what) {
case RESULT_IP_ADDRESS:
String total = msg.getData().getString("IP_ADDRESS_KEY");
// call your method with total data
break;
default:
break;
}
}
}
使您的类成为可以调用以访问所述总值的类(但实际上,对于一个简单的情况,它只是一个“组件”)。根据需要将此实例传递给消费者-这是DI的基础,甚至没有容器;向消费者提供信息/访问信息。如果可以避免,不要使用静态变量。(可以根据需要缓存该值。)感谢您的建议!是的,这是最简单的方法,但是您可以使用handler来避免全局变量。