0

私はpdfファイルを生成するクラスを持っています。このクラスは Activity によって拡張されます。つまり、onCreate、onPause (など) のメソッドがあります。

PDFファイルの生成中は生成に時間がかかるため、現在ファイルが生成中であることをユーザーに通知する進行状況バーを表示する必要があります。

生成ボタンをクリックすると、プログレスバーが数秒間フリーズすることを期待して、すべて正常に動作します(Logcatによると、ファイルの生成中にプログレスバーがフリーズします)。

したがって、私の問題は、ファイルの生成中に進行状況バーを停止できないようにする方法がわからないことです。

以下は私のコードです:

Log.i(TAG, "PDF generation: " + position);

final ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setIndeterminate(true);
dialog.setMessage("Generating...");
dialog.show();

new Thread(new Runnable() {

    @Override
    public void run() {

        startActivity(new Intent(getApplicationContext(),
            PdfGenerator.class));

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                dialog.hide();
            }
        });

    }

}).start();
4

1 に答える 1

1

runOnUiThread を使用してスレッドからアクティビティを開始するようにコードを変更します。

///... your code here..

    new Thread(new Runnable() {

        @Override
        public void run() {

            Your_Current_Activity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {

                dialog.cancel();

                // START ACTIVITY HERE
               Your_Current_Activity.this.startActivity(new 
                        Intent(Your_Current_Activity.this,
                                       PdfGenerator.class));

                }
            });

        }

    }).start();
于 2012-12-08T17:10:46.993 に答える