幹你娘,好煩阿!
以下幾種方法可以協助達成更新 UI 的方法,紀錄一下:
1. 呼叫 runOnUiThread
http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)
final void
|
runOnUiThread(Runnable action)
Runs the specified action
on the UI thread.
|
runOnUiThread.(new Runnable() {
public void run() {
myTextView.setText("update");
}
});
2. 呼叫 View 本身的 post 方法
http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable)
boolean
|
Causes the Runnable to be
added to the message queue.
|
myTextView.post(new Runnable() { public void run() { myTextView.setText("update") } });
3. 使用 Handler
http://developer.android.com/reference/android/os/Handler.html透過 Handler 可以 發送 Message 請 UI Thread 處理更新 UI。
使用方式如下:
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
myTextView.setText("update");
super.handleMessage(msg);
}
};
Message msg = new Message();
mHandler.sendMessage(msg);
4. 使用 AsyncTask
http://developer.android.com/reference/android/os/AsyncTask.htmlAsyncTask 可以在背景做運算,並把結果傳給 UI thread 進行更新,通會常用在需要處理大量運算等狀況下。
使用方式如下:
private class LoadImage extends AsyncTask {
protected String doInBackground(String... url) {
return loadImageFormNetwork(url[0]);
}
protected void onPostExecute(String result) {
myImage.setImage(result);
}
}
new loadImageTask().execute("www.xxx.com/image.png");
reference: http://gameorprogram.blogspot.tw/2011/12/android-ui.html
沒有留言:
張貼留言