我的应用中有一个关于屏幕在AlertDialog中打开,其中包含来自Google的开源API许可证的文本。但是,加载AlertDialog需要将近30秒,这样做通常会冻结UI线程。
private void about() {
AlertDialog.Builder builder= new AlertDialog.Builder(this);
builder.setTitle("About ...");
builder.setNeutralButton("Close",null);
Toast.makeText(this,"Loading...",Toast.LENGTH_LONG).show();
GoogleApiAvailability googleApi=GoogleApiAvailability.getInstance();
String text=googleApi.getOpenSourceSoftwareLicenseInfo(getContext());
String str=getResources().getString(R.string.about_message);
str+=text;
builder.setMessage(str);
builder.show();
}
编辑:导致此延迟的行是设置对话框文本的行。
注意:我已经尝试在AsyncTask中运行整个事情,并且这样做并没有改变任何东西。
答案 0 :(得分:0)
如果其他人遇到此问题,一个有效的解决方案是阻止活动覆盖另一个活动(如果它使用Theme.Dialog,则删除它)。虽然这并没有完全加快速度,但它会阻止UI线程被冻结一段时间。