0

グリッド ビューで画像を読み込んでいるときに、進行状況ダイアログを表示したいと考えています。
私が直面している問題は、現在のスレッドと進行状況ダイアログのスレッドが同時に実行されていることでした。

 public String Method1(){
        String output="";
        final ProgressDialog aProgDialogL = ProgressDialog.show(this, "", "Loading...");
        Thread thread = new Thread() {
            public void run () {
                //My codes
                aHandlerL.post(new Runnable() {
                    @Override
                    public void run() {
                        //Post Runnable codes
                        aProgDialogL.dismiss();
                    }
                });
            }
        };
        thread.start();

        /*
         * 
         * 
         * OTHER CODES
         * 
         * 
         */
        return output;
 }  

上記の例では、Progress Dialog Thread 内でコードを実行する必要があります。実行が終了したら、「その他のコード」を実行する必要があります。どうやってするの?
.
非同期タスクを使用してみました。非同期タスクが完了する前に、method1 が削除され、文字列が返されます。

    public String Method1(){
    String result="";
    new GetImages().execute();
    return result;

}
public class GetData extends AsyncTask<Void, Void, Integer>{

    @Override
    protected void onPreExecute() {
        aProgDialogL = ProgressDialog.show(Main.this, "", "Loading...");
    }

    @Override
    protected Integer doInBackground(Void... params) {
        //Progress Dialig Code
        return null;
    }

    @Override
    protected void onPostExecute(Integer result) {
        aProgDialogL.dismiss();
        //OTHER CODES
        super.onPostExecute(result);
    }

}
4

4 に答える 4

1

非同期タスクを使用できます。http://developer.android.com/reference/android/os/AsyncTask.html。ここに良いチュートリアルがあります。http://www.vogella.com/articles/AndroidPerformance/article.html .また、このリンク http://developer.android.com/guide/components/processes-and-threads.htmlもご覧ください。asynctask を使用して、必要に応じて変更してください。

     doInBackground()- For long running operations. Don't update ui here.
     onPreExecute()- update ui before running the operatio nin background.
     onPostExecute()- update ui after running the operation.
于 2012-11-23T09:01:30.060 に答える
0

問題を解決するために AsyncTask を使用することをお勧めします

http://p-xr.com/merging-2-tutorials-xml-data-progressdialog-using-asynctask/

http://p-xr.com/android-tutorial-how-to-make-a-progress-dialog/

http://developer.android.com/reference/android/os/AsyncTask.html
于 2012-11-23T08:59:48.887 に答える
0

その代わりに:特定の時間停止後にタイマーを使用して、スレッドを停止し、停止ステートメントの後に必要なコードを記述してください。

Timer timer=new Timer();
 timer.schedule(new TimerTask() {
 @Override
public void run() {
     thread.stop;
       // Other code   }

}、あなたが望む時間);

于 2012-11-23T09:34:27.850 に答える