2016-07-15 12 views
0

私はGoogleのオープンソースAPIライセンスのテキストを含むAlertDialogで開く私のアプリに約画面があります。ただし、AlertDialogをロードするのに30秒ほどかかるため、UIスレッドがフリーズすることがあります。AlertDialogテキストを設定する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(); 
} 

EDIT:この遅れを引き起こしている行は、ダイアログのテキストを設定1です。

注:私はすでに、AsyncTaskですべてを実行しようとしましたが、何も変更されませんでした。

+1

すべての行の間でデバッグプリントを行うと、どの行がアプリケーションをハングアップさせているのかがわかります – Bill

+0

これを実行しました。これはテキストを設定するものです – Daniel

+0

" AsyncTaskを使用すると、AsyncTaskを使用してもメソッドがより速く実行されるわけではなく、ブロックされたUIスレッドの問題が解決されます。コールとして、私は、ネットワークの要求であると思う、あなたがそれをスピードアップするためにたくさんあることはありません。 – Egor

答えて

0

他に誰かがこの問題を抱えている場合は、別のアクティビティがオーバーレイされないようにすることができます(Theme.Dialogを使用する場合は削除してください)。これは完全にスピードアップするわけではありませんが、UIスレッドが長い間フリーズするのを防ぎます。

関連する問題