Судя по вашему 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();
}
}
Это может быть не всекомпилировать, но, надеюсь, вы поняли идею.