Reputation: 4640
Is it a bad idea creating a separate class and use it as a storage which consists only of static data variables?
I am currently developing an app for android, but the question is general for Java.
In case of android, I am moving across activities and I would like to store some global/static flags/varibles in that separate class and being able to access them from any activity I want.
PS. The data is required only for the session time.
Upvotes: 8
Views: 12487
Reputation: 868
I would suggest that you should encapsulate your global class with a Singleton class. See more at Singleton Design Pattern
Upvotes: 0
Reputation: 474
i suggest that "never" use a global variables ....
when you are accessing to another activity you can throw some values using Intent.putExtras(Name_parameter, "value_parameter")
and to recive the value : Bundle b = getIntent().getExtras();
where b has all parameters
cheers,
Upvotes: 1
Reputation: 623
Well ! As far as I know It might depend on the size of your project ! If its relatively large its good to use separate class to store static data (not only one class , you might come in need of keeping them two or more classes depending on the type of the static data used)
Upvotes: 0
Reputation: 54322
Well, that's not a bad idea. You can use such type of a class in Android. But a small correction here. Instead of maintaining a class that holds static Data, you can make that class to extend Application class and use it store the data.
Here is a example,
public class HelloApplication extends Application {
private int globalVariable=1;
public int getGlobalVariable() {
return globalVariable;
}
public void setGlobalVariable(int globalVariable) {
this.globalVariable = globalVariable;
}
@Override
public void onCreate() {
//reinitialize variable
}
}
And in your Activity, do this,
(HelloApplication)getApplication()).setGlobalVariable(10);
int valiable=((HelloApplication)getApplication()).getGlobalVariable();
And speak about SharedPreference, you should consider using them only when the value has to be stored for a long time. if not, you should make use of the Application class and use setters and getters which is the legitimate way to do this.
Upvotes: 7
Reputation: 4114
use SharedPreference to store flags and variables
http://developer.android.com/reference/android/content/SharedPreferences.html
For Global variable:
it would be better to use the Android Application class. It's meant to store global application state
Upvotes: 1
Reputation: 29199
Instead of Creating a Static class to save Global Variables, I would suggest you to use Application class.
see Link:
Upvotes: 2
Reputation: 56925
You can use SharedPreference to store flags and variables .
Look at this Preference Demo .
Upvotes: 5