Несколько экземпляров из-за многократного нажатия одной и той же кнопки до ее запуска

Иногда, когда мое приложение работает медленнее, пользователь может нажать кнопку, с которой запускается намерение, несколько раз. Я слышал, что это может быть ошибка, исправленная в ICS - это правда? Или мне нужно управлять режимом запуска для каждого намерения, которое я запускаю. Спасибо за вашу помощь.


person SIr Codealot    schedule 03.01.2013    source источник
comment
Спасибо за ответы. Установка правильного режима запуска кажется не такой сложной задачей, как возня с кнопками. Если нет другого варианта, я думаю, что singleTop в режиме запуска активности android-manifest подойдет.   -  person SIr Codealot    schedule 03.01.2013


Ответы (2)


Добавьте немного простого устранения дребезга:

class MyActivity extends Activity {
    private boolean wasButtonPressed = false;

void onResume() {
    super onResume();
    wasButtonPressed = false;
}

void onClick( View view ) {
    if( !wasButtonPressed ) {
        wasButtonPressed = true;
        startActivity( ....
    }
 }
person 323go    schedule 03.01.2013

Вы должны отключить кнопку, когда выполняете длительную операцию, и она включается после выполнения операции в ответ на щелчок пользователя. Вы выполняете длинную операцию над методом onClick, ОС будет складывать все ваши пользовательские клики, ведьма будет перенаправлена ​​асинхронно, это не ошибка. Вы можете отобразить диалоговое окно «Ход выполнения», чтобы уведомить пользователя о длительной операции. Быстрое исправление будет заключаться в том, чтобы отключить кнопку до тех пор, пока предыдущий щелчок не будет полностью использован.

@Override
    public void onClick(View aView) {
        int id = aView.getId();
        switch (id) {
            case R.id.yourButton:
                aView.setEnabled(false);
               // add your own implementation
                aView.setEnabled(true);
                break;

            default:

                break;
        }

    }
person Anis BEN NSIR    schedule 03.01.2013