嗨,我在这里做一个应用程序。我正在使用全局类变量。它运行良好,但是如果我使用更多的全球班级变量,我有时会得到内存异常。
我尝试了:
public class SecondClass extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
TextView tv = (TextView)findViewById(R.id.tv);
tv.setText("Global String : " + GlobalClass.myVal);
}
}
class GlobalClass extends Application {
static String myVal;
}
这是正确的吗?
第一件事,您不需要静态变量即可在应用程序类中声明全局变量,
因此,将代码更改为:
class GlobalClass extends Application {
public String myVal;
}
然后,无论何时访问此数据,请获取应用程序对象:
GlobalClass global=(GlobalClass)context.getApplication();
global.myVal="anything";
您可以像这样使用
public class GlobalVar {
public int getMyVar() {
return myVar;
}
public void setMyVar(int myVar) {
this.myVar = myVar;
}
private int myVar = 0;
private static GlobalVar instance;
static {
instance = new GlobalVar();
}
private GlobalVar() {
}
public static GlobalVar getInstance() {
return GlobalVar.instance;
}
}
然后您可以像
一样调用GlobalVar.getInstance().setMyVar(int);
您还可以使用全局变量活动类别。例如
public class SecondClass extends Activity {
String S1,S2,S3;
EditText edt1,Edt2,Edt3;
Button btn1,btn2,btn3;
//like this wat Declare all variable you want to use in your Present Activity Class
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
edt1= (EditText)findViewById(R.id.tv);
}
}
查看singletons vs. android中的应用程序上下文?
在论坛中,关于单例与应用程序对象有很多讨论。我个人倾向于使用属性的应用对象。如果您不想在内存中保存很多对象,则使用lrucache(在兼容性软件包中有V11实现)来降低您的内存要求。
考虑到您将使用单例使用与使用应用程序对象相同的内存数量,所有对象都将保持在内存中,直到您释放它们为止(删除对它们的任何折叠,让GC从内存中清除它们)。<<<<<<<<<<<<<<<<<</p>