Должен ли я всегда заканчивать одно занятие, прежде чем перейти к другому? - PullRequest
6 голосов
/ 02 ноября 2011

Вы всегда звоните finish() по какому-либо занятию, прежде чем переходить к другому занятию?

Например, чтобы предотвратить переход пользователя к предыдущему действию с помощью кнопки возврата на мобильный телефон, некоторые люди предлагают завершить все действия, кроме основного. Таким образом, кнопка «Назад» всегда возвращает вас к основному виду деятельности (или к любому другому виду деятельности, который, по вашему мнению, должен перемещаться пользователь). Это делается путем переопределения поведения кнопки назад.

Плохая вещь в этом случае, когда из Обработчика запускается диалог, который пытается запустить после завершения действия (http://dimitar.me/android-displaying-dialogs-from-background-threads/).

Каково ваше эмпирическое правило по этому вопросу? Позвоните finish() каким-нибудь более умным способом или кнопкой возврата, чтобы направить пользователя на выбранную вами страницу?

Ответы [ 3 ]

4 голосов
/ 02 ноября 2011

Если вы понимаете рабочий процесс приложения Android, вам не нужно переопределять кнопку возврата (за исключением некоторых особых случаев, например, игр).

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

public class Activity1 extends Activity{

    // Some onclick-Handler
    public void onButtonClick(View v){
        Intent i = new Intent(this, Activity2.class);
        this.startActivity(i);
        // Don't want you to return:
        this.finish();
    }
}
1 голос
/ 02 ноября 2011

Если вы не хотите, чтобы кнопка «Назад» возвращалась к текущему действию, нажмите «Завершить занятие».

Если у вас открыто диалоговое окно, повторно откройте метод onPause этого занятия и закройте диалоговое окно.onPause будет вызываться, когда действие выходит за пределы экрана.

Мы переопределяем метод onBackPressed только тогда, когда нам нужно сделать что-то конкретное, иначе в обычных случаях мы просто оставляем его.

0 голосов
/ 02 ноября 2011

Если вы хотите открыть другое занятие и хотите завершить предыдущее занятие, используйте функцию finish ();Функция после вызова намерения другого действия.

завершит текущее действие и откроет новое действие.

...