设置AlertDialog文本冻结UI线程

时间:2016-07-15 21:12:05

标签: android google-api

我的应用中有一个关于屏幕在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中运行整个事情,并且这样做并没有改变任何东西。

1 个答案:

答案 0 :(得分:0)

如果其他人遇到此问题,一个有效的解决方案是阻止活动覆盖另一个活动(如果它使用Theme.Dialog,则删除它)。虽然这并没有完全加快速度,但它会阻止UI线程被冻结一段时间。