私のアプリでは、PDF を生成しています。最大で 45 秒かかる可能性があるため、プログレス バーを作成することにしました。プログレス バーは、UI スレッドとは別のスレッドから更新する必要があるため、そのスレッドに「convertNotesToPDF」関数を配置しました。プログレス バーは convertNotesToPDF 関数で更新されます。残念ながら、これはいくつかの問題を引き起こしました。プログレスバー スレッド内で PDF を生成する時間の約 50% で、開くことができないサイズ 0 の PDF が生成されます。残りの 50% の時間は問題なく動作しますが、それでは明らかに効果がありません。convert notestopdf をスレッドの外に置くと、すべて正常に動作します。
参照用のコードを次に示します。まず、これは 50% の確率で動作するコードです (関係のないコードをいくつか取り出しました)。
new Thread(new Runnable() {
public void run() {
convertDataToPDF(bmap);
convertNotesToPDF();
progressBar.dismiss();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
}
}).start();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
プログレスバースレッドの外でnotestopdfを変換するときのコードは次のとおりです。
new Thread(new Runnable() {
public void run() {
convertDataToPDF(bmap);
progressBar.dismiss();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
}
}).start();
convertNotesToPDF();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
お時間をいただきありがとうございます。