У меня вопрос ... Если мы попытаемся выполнить некоторый код после startActivity (), будет ли он полностью выполнен до вызова onPause () текущей активности? То есть я не знаюесли startActivity () действительно будет вызвано, когда метод, содержащий его, достигнет конца (что происходит с методом finish()
).
У меня есть пример, в котором я хочу detach()
объект (который имеет подключение к базе данных) после запуска нового действия на основе некоторых условий, но мне нужен этот объект для оценки одного условия.Я знаю, что могу проверить это условие и сохранить логическое значение и detach()
перед первым if
, но я хотел бы знать, является ли следующий код "допустимым".
Спасибо!
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
School selectedSchool = new School((Cursor)l.getItemAtPosition(position));
mSharedPreferences.edit()
.putLong(DatabaseManager.SCHOOL_ID, selectedSchool.getIdOpenErp())
.commit();
School.SchoolManager schoolManager = new School.SchoolManager(this);
Long[] sessionIdsOpenErpOfSelectedSchool = schoolManager.getSessionIdsOpenErp(selectedSchool);
if (sessionIdsOpenErpOfSelectedSchool.length > 0) {
if (schoolManager.isPreviousWorkingSchoolPresent()) { // line 10
Intent iParticipationManagement = new Intent(this, ParticipationManagement.class);
startActivity(iParticipationManagement);
} else {
Intent iSelectExistingSession = new Intent(this, SelectExistingSession.class);
startActivity(iSelectExistingSession);
}
} else {
Intent iSelectNewSession = new Intent(this, SelectNewSession.class);
startActivity(iSelectNewSession);
}
// The following line will be executed after one of the startActivity() methods is called...
// Is this legal? Or should I get the value from isPreviousWorkingSchoolPresent() (at line 10)
// before the first if and do the detach() there as well?
schoolManager.detach();
}