我有一個活動類如下。活動中的線程通信
public class LoginActivity extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (ImageView) findViewById(R.id.button1);
button1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
loader = (ProgressBar) findViewById(R.id.loader);
Thread processThread = new Thread(loaderThread);
loader.setVisibility(View.VISIBLE);
processThread.start();
try {
Thread.currentThread().join();
Log.i("Activity","gone past join()");
loader.setVisibility(View.INVISIBLE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private Runnable loaderThread = new Runnable() {
public void run() {
ServiceCaller serviceCaller = new ServiceCaller();
boolean status = serviceCaller.checkProcess(url);
}
};
}
更多問題[編輯] 這是場景。主要活動類在點擊上創建一個線程。然後創建的線程從服務器獲取一些數據。這是一項耗時的任務。所以在UI上顯示一個進度條。目前我正在使用AsyncTask(此處未顯示)來完成服務器數據檢索。但真正的挑戰是等待後臺任務完成並從中獲得價值。我正在尋找的是:
等到服務器調用完成並獲得結果。同時顯示進度條。
有什麼想法?如果我混淆你的道歉。
在此先感謝!
與@Ajmal同意,特別是你應該讓你的進度可見onPreExecute並把它藏在onPostExecute,並執行網絡在doInBackground – marmor
感謝投入!如果是這樣,我們可以讓UI線程等待,直到asynctask完成? – Renjith
是的,UI會顯示'ProgressBar'直到後臺進程完成 –