如果你想單獨數據並顯示多一點,你可以遵循一個監聽器模式:
讓您的活動實現了新的界面 - 是這樣的:
public interface boolean OnTextUpdatedListener {
onTextUpdated(int id, String newText);
}
和實施(在您的活動):
@Override
public boolean onTextUpdated(int id, String newText) {
TextView tv = (TextView)findViewById(id);
if(tv == null) {
return false;
}
tv.setText(newText);
return true;
}
這看起來是這樣的一個的AsyncTask:
public class TextUpdater extends AsyncTask<Void, String, Void> {
OnTextUpdatedListener mListener;
int mId;
volatile boolean mRunning;
public TextUpdater(OnTextUpdatedListener listener, int id) {
super();
mListener = listener;
mId = id;
}
@Override
protected void onProgressUpdate(String... values) {
mRunning = mListener.onTextUpdated(mId, values[0]);
}
@Override
protected Void doInBackground(Void... params) {
mRunning = true;
while(mRunning) {
//retrieve text from network
this.publishProgress(downloadedText);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
mListener = null;
}
}
您的活動保持對UI的控制,AsyncTask下載並在更新內容時通知。
「......有沒有更好的辦法?」這種方式有什麼問題? –
將UI的操作與數據處理分開不是一種更好的做法嗎?就像試圖做模塊化編程一樣。 – mthpvg