Bri*_*ian 1 rss multithreading android asynchronous task
我正在创建一个应用程序,它从一个位置抓取RSSFeed,解析它,并在丰富的ListView中显示这些项目.我已经让它同步工作,但它挂起初始下载.我使用Google博客中的ImageDownloader异步抓取图像来填充ListView,但是我如何进行线程下载过程,使显示更新等到完成后再将RSS传递给适配器,并在初始化期间显示对话框下载?我对线程和消息处理完全不熟悉!
到目前为止,这是我的onCreate中的代码:
feedWait = new Handler() {
public void handleMessage(Message msg) {
Log.d(TAG, "made it to handler");
UpdateDisplay();
}
};
netThread.start();
Run Code Online (Sandbox Code Playgroud)
这是线程:
private Thread netThread = new Thread() {
public void run() {
getFeed();
feedWait.handleMessage(new Message());
}
};
Run Code Online (Sandbox Code Playgroud)
这会抛出一个错误,说我必须在创建一个处理程序之前调用Looper.prepare(),但如果我在onCreate中执行Looper.prepare(),它就会失败.
小智 6
你应该使用一个AsyncTask
.例如,
private class GetFeedTask extends AsyncTask<Void,Void,Boolean> {
@Override
public Boolean doInBackground(Void... params) {
return getFeed();
}
private boolean getFeed() {
//return true if successful, false if not
}
@Override
public void onPostExecute(Boolean result) {
if(result) //got feed successfully
updateDisplay();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的onCreate()
电话里new GetFeedTask().execute();
.
有关文档,请参阅http://developer.android.com/reference/android/os/AsyncTask.html.
归档时间: |
|
查看次数: |
1426 次 |
最近记录: |