2013-09-20 5 views
2

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

Я могу проверить, зарегистрирован ли пользователь, храня его в SharedPreferences, который, кажется, работает без проблем. Так что я до сих пор в моей MainActivity:

public void onCreate(Bundle savedInstanceState) { 
    if (needsRegistration()) { 
     Intent intent = new Intent(this, RegistrationActivity.class); 
     startActivity(intent); 
    } 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
} 

У меня возникают следующие проблемы с этим: (? До или после super.onCreate(savedInstanceState))

  • Я не уверен, где я должен начать регистрацию деятельности
  • MainActivity, кажется, продолжает работать в фоновом режиме и создает ошибки (поскольку пользователь не зарегистрирован)
  • пользователь может перейти к MainActivity, нажав на кнопку назад

Каков правильный способ сделать это?

ответ

2

Я не уверен, где я должен начать регистрацию активности (до или после super.onCreate (savedInstanceState)?)

Вы должны иметь свой super() вызов в качестве первого вызова при выполнении функций, таких как открытие onCreate(), onResume() и т. Д. Таким образом, функция может делать все, что необходимо для вызова функции super(), чтобы функция была готова. Это не всегда проблема, но безопаснее сначала сделать вызов. Функции отделки, такие как onBackPressed(), finish() и т. Д., Должны иметь вызов super() после того, как вы выполните очистку, такую ​​как сохранение данных.

MainActivity, кажется, продолжает работать в фоновом режиме и создает ошибки (поскольку пользователь не зарегистрирован)

Сделать RegistrationActivity пусковая Activity и проверить, если пользователь зарегистрирован, и если да начать MainActivity еще покажите свой регистрационный код или что бы вы ни делали в этом случае.

Пользователь может перейти к MainActivity, нажав на кнопку Назад

Смотреть предыдущее решение. Если MainActivity запускается только с RegistrationActivity, это не будет проблемой.

Проверка SharedPreferences, чтобы увидеть, если пользователь зарегистрирован не должно вызывать много задержки, так что вы можете сделать это перед созданием layout для этого Activity и перейти к MainActivity, если они зарегистрированы. Если по какой-то причине вы заметили большую задержку, вы можете сделать заставку, чтобы показать свой логотип или что-то еще, пока вы проверяете зарегистрированный или нет, а затем предпримите соответствующие действия, перейдя либо на регистрацию, либо на главную Activity.

+0

Благодарим вас, обменяв действия и добавив 'android: noHistory =" true "' в манифест регистрации активности, решили проблемы.Однако теперь, когда я запускаю приложение в качестве зарегистрированного пользователя, я вижу заголовок «Регистрация» на панели действий на долю секунды, что немного раздражает. Любой способ решить это? –

+0

Вот и пригодится реализация заставки. Если вы не избавитесь от «ActionBar» в регистре «Активность», если вам это не нужно. – codeMagic

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