如何在Android中使用全局类变量



嗨,我在这里做一个应用程序。我正在使用全局类变量。它运行良好,但是如果我使用更多的全球班级变量,我有时会得到内存异常。

我尝试了:

  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>

最新更新