我认为你的任务使用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
的工作地点。
是否要仅针对列表视图或针对整个活动禁用它(因此用户在您的应用程序中将无法执行任何操作)。 – 2012-03-03 08:25:31
我想要整个活动。 – Programmer 2012-03-03 08:44:10
还有一个问题:我想你确实需要这样做,因为你希望在用户可以继续之前先完成一些后台进程? (或者是否还有其他特殊原因?) – 2012-03-03 08:45:56