Мне любопытно кое-что. Как я могу закончить свою текущую деятельность и начать другую.
Пример:
MainActivity
--(starts)--> LoginActivity
--(if success, starts)--> SyncActivity
--(if success start)--> MainActivity (with updated data).
Итак, я хочу, чтобы, когда SyncActivity
запускал MainActivity
после успешной синхронизации, и если я нажму кнопку возврата, не возвращаться к SyncActivity
или любому другому активность открыта до SynActivity
.
Я пробовал использовать этот код:
Intent intent = new Intent(Synchronization.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
this.finish();
, но он не работает должным образом. Есть идеи, как заставить все работать должным образом?
Судя по вашему OP, я не уверен, что вам обязательно нужно дважды инициализировать mainActivity.
Android разработан таким образом, что приложение никогда не закрывается пользователем. Сконцентрируйтесь на переопределении методов жизненного цикла Android, таких как OnResume и OnPause, чтобы сохранить данные пользовательского интерфейса и т. Д.
Следовательно, вам не нужно явно finish()
выполнять основное действие (и на самом деле не должно). Чтобы получить данные для входа или синхронизации от предыдущих действий, просто переопределите метод OnActivityResult()
. Однако, чтобы сделать это, вы должны начать упражнение, используя startActivityForResult(intent)
. Таким образом, для каждого действия вы должны сделать следующее:
Основное действие:
static public int LOGIN_RETURN_CODE = 1;
для начала входа в систему:
Intent intent = new Intent(MainActivity.this, LogInActivity.class);
startActivityForResult(intent, LOGIN_RETURN_CODE);
для получения информации для входа в систему:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case LOGIN_RETURN_CODE:
//do something with bundle attached
}
}
Активность при входе:
static public int SYNC_RETURN_CODE = 2;
для запуска синхронизации:
Intent intent = new Intent(LogInActivity.this, SyncActivity.class);
startActivityForResult(intent,SYNC_RETURN_CODE);
для получения информации и возврата в главное состояние:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case MainActivity.SYNC_RETURN_CODE:
Intent intent = new Intent(...);
intent.setResult(RESULT_OK);
finish();
}
}
Это может быть не все скомпилируйте, но, надеюсь, вы поняли идею.