2011-09-28 10 views
1

asynctaskのおかげでUIが動的に更新されます。 onpreexecuteメソッドでは、progressdialogを表示しますが、それは最後まで表示されます。progressdialogが最後まで表示される(非同期タスク)

つまり、ボタンをクリックしてアクティビティを変更すると、UIがフリーズして、簡単にprogressdialogが表示され、最後にUIが更新されます。

私のコードで何が間違っていますか?

private ProgressDialog pd ; 

@Override 
protected void onCreate (Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.sqlview); 

    new taskDoSomething().execute(); 
} 

private class taskDoSomething extends AsyncTask<Long, Integer, Integer> 
{ 

    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     pd = ProgressDialog.show(SQLView.this, "Working..", "Calculating", true,true); 
     } 


protected Integer doInBackground(Long... params) { 
     UpdateIHM(); 
     return 0; 
    } 

    protected void onPostExecute(Integer result) { 
      Toast.makeText(SQLView.this,"onPostExecute", Toast.LENGTH_LONG).show(); 
    } 
    } 


public void UpdateIHM() 
    { 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 

      LinearLayout my_layout = (LinearLayout) findViewById(R.id.lil_content); 

      HotorNot info = new HotorNot(SQLView.this); 
      my_table data = new my_table(); 
      Log.i("Test","ok 0"); 
      info.open(); 
      Log.i("Test","ok 0.1"); 


      for(int i =0; i<3; i++){ 
       data = info.getData(); 
       for (int j=0; j<50; j++){ 
       LinearLayout lil_temp = new LinearLayout(SQLView.this); 
        lil_temp.setOrientation(LinearLayout.HORIZONTAL); 
        lil_temp.addView(buildText(data.row), getParams(WRAP, WRAP)); 
        lil_temp.addView(buildText(data.name), getParams(WRAP, WRAP)); 
        lil_temp.addView(buildText(data.hotness), getParams(WRAP, WRAP)); 
        my_layout.addView(lil_temp); 
       } 
      } 

      info.close(); 
      handler.sendEmptyMessage(102); 

      } 
     }); 

    } 
+0

問題を解決した場合は、答えを記入してください。私は同じ問題に直面しています。 – Hemant

答えて

0

だけAsyncTaskを実行する前に、あなたのProgressDialogを示す試してみてください。それは通常役に立ちます。

+0

私の非同期タスクの直前のprogressdalogでは、私は同じ動作をします:ボタンをクリックしてアクティビティを変更し、その後UIがフリーズし、簡単にprogressdialogを見て最後にUIを更新しました。私が持っていたと思いますが、私はボタンをクリックしてokをクリックし、progressdialogが表示され、UIが更新されました:-)。 – Miroufle

0

私はProgressDialog.dismiss()をonPostExecute()の開始時に呼び出す点を除き、同じことをやっています。

+0

私はそれを試しましたが、変更はありません、問題は活動の始めにあります(私は推測します)。私の進歩ダイアグラムは私が望むように消える。ご協力いただきありがとうございます。 – Miroufle

関連する問題