Статический метод и состояние (View state in static method)

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Статический метод и состояние (View state in static method)

Сообщение Leeroy » 10 сен 2014, 21:04

Всем привет.
Дописываю приложение, коснулся вопрос повторяемости кода и оптимизации.

В приложении есть около 20 активити в каждой из которых одинаковый метод, который меняет видимость пунктов экшн бара в зависимости от сохраненной переменной.

Код: Выделить всё

 private void checkAuth() {

        if (mOutAuth == null || mAuth == null) {
            return;
        }

        //Get Authoriization state
        boolean checkFlagAuth = Utility.loadCheckAuth(this);
        boolean checkAuth = Utility.isAuth(this);

        //for auth user change menu
        if (checkAuth || checkFlagAuth) {
            mAuth.setVisible(false);
            mOutAuth.setTitle(Utility.getLogin(this));
        } else {
            mOutAuth.setVisible(false);
        }
    }
Скажите как скажется на производительности либо памяти, либо NPE если я вынесу в статик код, который будет менять состояние View ?

Код: Выделить всё

public static void checkAuth(Context context, MenuItem mOuthAuth, MenuItem mAuth) {

        if (mOutAuth == null || mAuth == null) {
            return;
        }

        //Get Authoriization state
        boolean checkFlagAuth = Utility.loadCheckAuth(this);
        boolean checkAuth = Utility.isAuth(this);

        //for auth user change menu
        if (checkAuth || checkFlagAuth) {
            mAuth.setVisible(false);
            mOutAuth.setTitle(Utility.getLogin(this));
        } else {
            mOutAuth.setVisible(false);
        }
    }
И можно ли гонять контекст по статик методам?
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Статический метод и состояние (View state in static meth

Сообщение Mikhail_dev » 10 сен 2014, 21:40

У меня есть активность
public class BaseActivity extends ActionBarActivity implements BaseActivityListener {
от которой я наследую все активности и она имеет различные методы, которые довольно часто необходимы. К примеру
[syntax=java5]
private ProgressDialog progressDialog;

@Override
public void showProgressDialog() {
if ((progressDialog!=null) && (progressDialog.isShowing()))
hideProgressDialog();
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("...");
progressDialog.show();
}

@Override
public void hideProgressDialog() {
if (progressDialog!=null)
progressDialog.dismiss();
progressDialog = null;
}
[/syntax]
А потом я просто в любой активности вызываю данный метод. Это называется наследование. Почитайте про него. Вам совершенно не обязательно делать статическим что-то, елси выполняется одно и тоже действие.

Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Re: Статический метод и состояние (View state in static meth

Сообщение Leeroy » 10 сен 2014, 22:13

Спасибо за совет по поводу наследования, конечно же я читал про него, это один из 4-x принципов ООП.
Как-то не думал, что кто-то применяет наследование к активити.
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма


Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Статический метод и состояние (View state in static meth

Сообщение KamiSempai » 11 сен 2014, 15:21

Мало того, если checkAuth вызывается, например, в onCreate всех активностей то его вызов можно переместить в onCreate BaseActivity. А еще его можно сделать protected и переопределять в тех случаях когда в какой либо активности необходимо поменять поведение checkAuth.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить