2015-07-28 3 views
4

У меня вопрос о лучшей практике Android. Я должен следовать коду, который работает красиво, но я думаю, что он не настолько изящный. Итак, мой вопрос: на каком этапе жизненного цикла приятно начать другую деятельность?Когда хорошее время, чтобы начать другое мероприятие

public class LoginActivity extends ActionBarActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ParentPreferences parentPreferences = new ParentPreferences(getApplicationContext()); 
    if (parentPreferences.isPassExists()) { 
     Intent i = new Intent(this, MainActivity.class); 
     startActivity(i); 
    } else { 
     setContentView(R.layout.login); 
    } 
} 
} 

Задача о: если родитель уже сделал пароль для защиты приложения, чем нам не нужно, чтобы показать LoginActivity. Я не знаю, это «здорово» для активности, чтобы дать намерение запустить, когда ни метод onCreate, ни другие методы жизненного цикла не будут завершены.

Что вы думаете о парнях?

+0

не забудьте закончить() ваш вход в систему – Blackbelt

+0

Thx! Зачем нужно здесь? Что, если я не добавлю финиша, но у меня нетистории в манифесте? – Karoly

+0

noHistory позаботится об этом – Blackbelt

ответ

3

Я думаю, что лучший способ заключается в создании LauncherActivity, и начать activitys из них:

Например:

 public class LauncherActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ParentPreferences parentPreferences = new ParentPreferences(getApplicationContext()); 
     Intent intent; 
     if (parentPreferences.isPassExists()) { 
      intent = new Intent(this, MainActivity.class); 
     } else { 
      intent = new Intent(this, LoginActivity.class); 

     } 
     intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) 
     startActivity(i); 
    } 
    } 

Обновлено: отсылая к Activity | Android Developer

enter image description here

onCreate - это первый жизненный цикл e, поэтому лучше начать работу B, когда активность A только началась и не раздувает какой-либо макет

+0

hm, я согласен. Ваше решение немного лучше, но все равно вредит или не наносит вреда (это мой вопрос) о LauncherActivity, потому что мы запускаем другие действия из onCreate. – Karoly

+0

Launch activity from onCreate - лучшая практика –

+1

Спасибо, Сергей! Могу ли я попросить объяснить, почему или дать ссылку на официальные документы? Если вы это сделаете, добавьте в качестве ответа, чтобы я мог его принять. – Karoly

-1

Я думаю, что лучшим решением для вас является добавление SplashScreen или как «поддельный» экран. Здесь вы проверяете, зарегистрирован ли он уже и на его основе вы начинаете правильную деятельность.

Возможно, самым лучшим способом было бы сделать это с помощью фрагментов, но вы должны изменить много своего приложения.

О, если назвать его, OnCreate идеально :)

0

Я бы манифесте начать свой MainActivity или то, что вы называете его. MainActivity запускается, проверяя, вошел ли пользователь в систему. Если нет, он запускает ваш LoginActivity, который возвращается в onActivityResult() с результатом входа. Это зависит от требования к пользователю входить в систему при каждом запуске приложения или только один раз или раз в то время. Если использование должно регистрироваться каждый раз, то это нормально, когда вы начинаете с LoginActivity. В противном случае запуск LoginActivity каждый раз и переход к MainActivity (или что-то еще) кажутся просто пустой тратой. «Отходы» не в смысле производительности, а в ясности вашего приложения.

Смежные вопросы