我希望在后台执行一些指令时显示进度条,但不想锁定屏幕。以下代码会锁定屏幕:
private class ConvertDataInBackground extends AsyncTask<Params, Void, Boolean> {
private MyProgressDialog mProgressDialog;
@Override
public void onPreExecute() {
if(mProgressDialog == null)
mProgressDialog = MyProgressDialog.show(mActivity, null, null);
}
@Override
protected Boolean doInBackground(Params...params) {
boolean conversionResult = executeConversion(params[0].item1, params[0].item2, params[0].item3);
return conversionResult;
}
@Override
protected void onPostExecute(Boolean result) {
try {
if(mProgressDialog.isShowing())
mProgressDialog.dismiss();
if(result) {
Toast toast = Toast.makeText(mActivity, R.string.conversion_result, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在后台执行指令可能需要花费一些时间,但我希望用户能够在界面上进行操作。 您是否知道在进度对话框显示的同时,我们如何与界面进行交互的方法?
FLAG_NOT_TOUCH_MODAL
添加到其窗口参数中 - 但我不确定它是否有效。 - Aleks GPowerManager
API 和WakeLock
方法。有各种标志可以调用以防止屏幕变暗、锁定和休眠。https://developer.android.com/reference/android/os/PowerManager.html#SCREEN_DIM_WAKE_LOCK - Joshua Pinter