WCFの部分を消費するときに進行状況バーを書きました。私は応答を得た後、それを却下する必要があることを知る必要があります。WCFを消費するときのAndroid Progressbar
ProgressThread progThread;
ProgressDialog progDialog;
int typeBar; // Determines type progress bar: 0 = spinner, 1 = horizontal
int delay = 40; // manually define thedelay
int maxBarValue = 200; // manually define the maximum value
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case 0:
typeBar = 0;
showDialog(typeBar);
return true;
case 1:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected Dialog onCreateDialog(int id) {
// Spinner
progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setMessage("Loading...");
progThread = new ProgressThread(handler);
progThread.start();
return progDialog;
}
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
int total = msg.getData().getInt("total");
progDialog.setProgress(total);
if (total <= 0){
dismissDialog(typeBar);
progThread.setState(ProgressThread.DONE);
}
}
};
これは
private class ProgressThread extends Thread {
final static int DONE = 0;
final static int RUNNING = 1;
Handler mHandler;
int mState;
int total;
ProgressThread(Handler h) {
mHandler = h;
}
@Override
public void run() {
mState = RUNNING;
total = maxBarValue;
while (mState == RUNNING) {
try {
loadDownloadData();
Thread.sleep(delay);
} catch (InterruptedException e) {
Log.e("ERROR", "Thread was Interrupted");
}
Message msg = mHandler.obtainMessage();
Bundle b = new Bundle();
b.putInt("total", total);
msg.setData(b);
mHandler.sendMessage(msg);
total--;
}
}
public void setState(int state) {
mState = state;
}
}
WCF呼び出し法)loadDownloadData(あるスレッドのクラスです。我々は唯一のそれは、このプログレスバーをdismisする必要が応答を取得した後、睡眠のための時間枠を定義する方法&を呼び出したい、...
は、事前に私に感謝を助けてください。
実際に私はsq-liteとSQLサーバを同期させています。その状況では、私はWCFからAndroidにデータのチャンクをダウンロードしたいと思っています。バックエンドクライアントは、そのプロセスが完了するまで待つためのプログレスバーを表示する必要があります。あなたの提案から、私はloadDownloadData()mtdを同期させるべきです。私は本当に私が同期を使用する場合は、理解していないMutipleユーザアクセス。それらのユーザーは待つ必要がありますか?それとも各ユーザーのスレッドが広がっていますか? plsは私を助けます。 – Piraba
これは複数のユーザーについてではありません。シングルユーザーがシングルアンドロイドアプリケーションを使用して、データをダウンロードしてプログレスバーを表示したい場合。 'loadDownloadData'がブロックしている場合、あなたのスレッドスリープは意味をなさない。 –