Отключить взаимодействие с пользователем на несколько секунд Android - PullRequest
0 голосов
/ 03 марта 2012

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

   final LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1);  
   ll.setEnabled(false);


    new Handler().postDelayed(new Runnable(){
        public void run() {
            ll.setEnabled(true);
        } 
    }, 3000); 

1 Ответ

2 голосов
/ 03 марта 2012

Я думаю, что для вашей задачи использование потока postDelayed - это не тот путь.Используйте AsyncTask

Одна из возможных проблем заключается в том, что при текущем подходе вы просто приближаете время ожидания к 3 секундам, но с AsyncTask вы можете продолжить сразу после завершения задачи.Асинхронные задачи в основном могут выполнять что-то в фоновом режиме, не блокируя пользовательский интерфейс.Однако вы также можете настроить их так, чтобы они отображали диалог прогресса, который будет блокировать любые взаимодействия пользователя с вашим приложением до завершения задачи.

Вот пример асинхронной задачи, которая выполняет что-то в фоновом режиме и показывает диалог прогресса:

public class ProgressTask extends AsyncTask<Void, Void, Boolean> {
    /** progress dialog to show user that the backup is processing. */
    private ProgressDialog dialog;
    /** application context. */
    private Activity activity;

    public ProgressTask(Activity activity) {
        this.activity = activity;
        dialog = new ProgressDialog(context);
    }

    protected void onPreExecute() {
        this.dialog.setMessage("Please wait");
        this.dialog.show();
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        if (dialog.isShowing()) {
            dialog.dismiss();
        }
    }

    protected Boolean doInBackground(final Void... args) {
         // HERE GOES YOUR BACKGROUND WORK 
    }
}

Предлагаю вам разместить вашу отложенную работу вместо // HERE GOES YOUR BACKGROUND WORK.

...