|
有没有遇到过如下情况
1、需要从网上更新数据;
2、更新下来的数据经过处理,需要显示在界面上;
3、比如ListView的数据更新;
一般情况 ListView的数据更新要求在主线程中完成。
这种,以前都是用线程或者是Handler来完成,现在不用了,
有更好的:
使用AsyncTask,例如 TwitterAsyncTask task = new TwitterAsyncTask(client,this);
TwRequest req = client.makeStatusesHomeTimeLineReq(null);
task.execute(req);
复制代码实际的使用方法:
/**
* AsyncTask Twitter Twitter Task, AsyncTask <arams, Progress, Result>
*/
public final class TwitterAsyncTask extends AsyncTask<TwRequest,Integer, TwResponse> {
private TwitterClient client;
private TwitterClientDelegate delegate;
/**
* create
* @param c TwitterClient ?Twitter API Call client
* @param d TwitterClientDelegate
*/
public TwitterAsyncTask(TwitterClient c,TwitterClientDelegate d) {
client = c;
delegate = d;
}
@Override
protected TwResponse doInBackground(TwRequest... objects) {
int len = objects.length;
TwResponse ret = null;
if(len > 0){
TwRequest req = objects[0];
ret = TwitterClient.invokeTW(req);
}
return ret;
}
@Override
protected void onPostExecute(TwResponse result) { // 执行后,这个就是在主线程了
if(result != null){
String xml = TwitterClient.processResponseData(result);
if(xml != null){
Element element = TwitterParser.parseXML(xml);
if(delegate != null){
delegate.process(element);
}
}
}
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}
复制代码 |
|