我有一个应用程序加载一个对话框,其中包含在对话框的 XML 布局中指定的一些图像。我已经阅读了很多关于在 Android 中使用图像并注意 VM 预算的内容,因此我相信任何可能占用大量内存的图像处理都应该在主线程之外处理。话虽如此,我想知道使用 ASyncTask 从 UI 线程加载整个布局是否明智。我有一个工作代码,但我无法通过一些谷歌搜索来确定这是否是一种好的做法。这是下面的代码。
这是当用户按下按钮加载对话框时触发的 case 语句。
case R.id.showDialog:
vibrator.vibrate(vibrateMilis);
mDialog = new Dialog(getActivity(), R.style.CustomDialog);
new LoadLayout().execute("");
break;
这是 ASyncTask
private class LoadLayout extends AsyncTask<String, Void, String>
{
ProgressDialog progressDialog;
@Override
protected String doInBackground(String... params)
{
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialog.setContentView(R.layout.dialog_layout);
mDialog.setCancelable(true);
return null;
}
@Override
protected void onPostExecute(String result)
{
progressDialog.cancel();
mDialog.show();
}
@Override
protected void onPreExecute()
{
progressDialog = new ProgressDialog(
getActivity());
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected void onProgressUpdate(Void... values)
{
// Do nothing
}
}
所以这段代码有效,但我的问题是这个。这被认为是好的做法吗?我的口味似乎有点hacky。我没有在多次 Google 搜索中遇到这个问题,所以这就是我有点担心的原因。我的意思是,如果这是一种好的做法,它会被记录在某个地方吗?
感谢您的任何意见。