2011-08-09 27 views
1

ボタンのクリックでsqliteデータベースからデータを取得するアプリケーションを設計しています。私は、プロセスが3秒を超えるような長い場合にのみ、フェッチの時間中に待機メッセージまたは進行状況バーを表示したい。それ以外の場合は、プログラムを進めるだけです。どのように私はこれを行うのですか? PLSSあなたがAsyncTaskを使用する必要がありますプログレスバーを表示するために、すべての長時間の操作中にのみ表示されるプログレスバー

protected void GetOrders() 
{ 
    ProgressDialog dialog = null; 
    try 
    { 
     dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 
     //Accesses database 
     allOrders=ProductionOrdersBL.GetOrder(); 
     Thread.sleep(4000); 

    } 
    catch(Exception e){} 
    finally 
    { 
     dialog.dismiss(); 
    } 
} 

答えて

0

を使用)(postExecuteで、その後

try{ 
thread.sleep(3000); 
dialog=ProgressDialog.show(loginScreen.this,"PLEASE WAIT","LOADING CONTENTS ..",true); 

}catch(){ 
} 

を言うと、そのpreExecute()方法で私はexecuteメソッドの呼び出し後にいくつかの操作を持っていた...解決策を見つけました。したがって、doInBackground()メソッドがUI以外のスレッドで実行されている間、私のUIスレッドは単にexecuteメソッド呼び出しの後に続くコードの実行を続けました...解決策は、executeメソッド呼び出しの後にメインUIスレッドでタスクを実行しないことです:)

1

最初のを助ける....私は、次のコードを使用して、進捗ダイアログを表示しようとしたが、それだけでは何も表示せずに指定された睡眠時間と進行を待ち() (this)。

if(dialog.isShowing()){ 
dialog.dismiss 
} 
+0

ありがとうございました.... – Saiesh

+0

ちょっと私はまだスタックされています.... AsyncTaskのdoInBackground()メソッドは、完全に終了する前にpostExecuteメソッドに戻ります...これをやめるにはどうすればいいですか? – Saiesh

+0

これは決して起こりません。いくつかの他の問題があるかもしれない、サーバーからデータを取得中に例外があります。 doExecute()は、doInBackground()が完了した後にのみ呼び出されます。 – ngesh

関連する問題