几秒钟禁用用户交互android

时间:2012-03-03 07:49:08

标签: android handler

我正在寻找的是如何禁用几秒钟的用户交互,我已经尝试了很多方法,但它们都没有在这里工作是一种方法。

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


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

1 个答案:

答案 0 :(得分:2)

我认为使用postDelayed线程的任务不是要走的路。使用AsyncTask

一个可能的问题是,使用您当前的方法,您只需将等待时间近似为3秒,但使用AsyncTask,您可以在任务完成后立即继续。异步任务基本上可以在后台执行某些操作,而不会阻止UI。但是,您也可以将它们配置为显示进度对话框,这将阻止任何用户与您的应用程序的交互,直到任务完成。

以下是在后台执行某些操作并显示进度对话框的异步任务示例:

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的位置。