在Android中,可以使用AsyncTask来在后台线程执行耗时的操作,然后在主线程更新UI。以下是一个示例代码,演示如何在后台线程中创建捕获会话并在主线程中冻结UI 2秒钟:
public class CaptureSessionTask extends AsyncTask {
private Context mContext;
private ProgressDialog mProgressDialog;
public CaptureSessionTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// 在后台线程执行前显示进度对话框
mProgressDialog = ProgressDialog.show(mContext, "请稍等", "正在创建捕获会话...");
}
@Override
protected Void doInBackground(Void... voids) {
// 在后台线程执行耗时操作,例如创建捕获会话
try {
Thread.sleep(2000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 在主线程中更新UI
mProgressDialog.dismiss(); // 关闭进度对话框
Toast.makeText(mContext, "捕获会话创建成功", Toast.LENGTH_SHORT).show();
}
}
然后,你可以在你的Activity或Fragment中调用这个AsyncTask来执行操作:
CaptureSessionTask captureSessionTask = new CaptureSessionTask(this);
captureSessionTask.execute();
这样,在后台线程中创建捕获会话的操作将在UI被冻结2秒后完成,并显示一个Toast通知用户操作已成功完成。