Страница 1 из 1

использование статических переменных в приложении

Добавлено: 16 май 2014, 20:31
werter
собственно у меня вопрос :

считается ли дурным тоном использование статических переменных ?

как бы очень удобно иметь доступ к переменной с любого фрагмента или Activity.

насколько нормальная это практика ?

Re: использование статических переменных в приложении

Добавлено: 16 май 2014, 20:36
Donart
werter писал(а):насколько нормальная это практика ?

Такой практики нет и это не нормально, нарушается принцип инкапсуляции. Статическими могут быть константы, с обычными переменными работают через гетеры и сетеры.

Re: использование статических переменных в приложении

Добавлено: 16 май 2014, 23:47
werter
понятно , а как по поводу singletons использования ?

нашел тут :
If you looking at accessing the database, look at creating a database singleton.

So something like:

public class Database {

// This starts off null
private static Database mInstance;

/**
* Singleton method, will return the same object each time.
*/
public static final Database getInstance() {
// First time this method is called by Database.getInstance() from anywhere
// in your App. It will create this Object once.
if(mInstance == null) mInstance = new Database();
// Returns the created object from a statically assigned field so its never
// destroyed until you do it manually.
return mInstance;
}

//Private constructor to stop you from creating this object by accident
private Database(){
//Init db object
}

}
So then from your fragments and activities you can then place the following field in your class's (Better use use a base activity and fragment to save you repeating code).

public abstract class BaseFragment extends Fragment {

protected final Database mDatabase = Database.getInstance();

}

Re: использование статических переменных в приложении

Добавлено: 17 май 2014, 00:00
Foenix
ссылки на инстансы можно в принципе хранить в синглтоне (лучше класс аппликейшн сделать )
а еще лучше (если вопрос про бд) - организовать контент-провайдер, и вопрос отпадет.