【发布时间】:2011-11-19 10:25:35
【问题描述】:
我到处搜索,但似乎没有人知道答案。
我的简单问题是:
有没有办法预加载活动?我需要这个,因为我使用一个选项卡,一个选项卡有多个活动。我的一项活动是 rss 阅读器,它的加载非常困难(大约 2-3 秒)。
我在网上找到的都是一个笑话。每个人都有自己的看法,但没有人能指出示例代码。等待答复,谢谢!
这是加载提要的代码:
At onCreate:
// go get our feed!
feed = getFeed(RSSFEEDOFCHOICE);
// display UI
UpdateDisplay();
countdown();
And the functions:
private RSSFeed getFeed(String urlToRssFeed)
{
try
{
// setup the url
URL url = new URL(urlToRssFeed);
// create the factory
SAXParserFactory factory = SAXParserFactory.newInstance();
// create a parser
SAXParser parser = factory.newSAXParser();
// create the reader (scanner)
XMLReader xmlreader = parser.getXMLReader();
// instantiate our handler
RSSHandler theRssHandler = new RSSHandler();
// assign our handler
xmlreader.setContentHandler(theRssHandler);
// get our data via the url class
InputSource is = new InputSource(url.openStream());
// perform the synchronous parse
xmlreader.parse(is);
// get the results - should be a fully populated RSSFeed instance, or null on error
return theRssHandler.getFeed();
}
catch (Exception ee)
{
// if we have a problem, simply return null
return null;
}
}
private void UpdateDisplay()
{
TextView feedtitle = (TextView) findViewById(R.id.feedtitle);
TextView feedpubdate = (TextView) findViewById(R.id.feedpubdate);
ListView itemlist = (ListView) findViewById(R.id.itemlist);
if (feed == null)
{
feedtitle.setText("No RSS Feed Available");
return;
}
feedtitle.setText(feed.getTitle());
feedpubdate.setText(feed.getPubDate());
ArrayAdapter<RSSItem> adapter = new ArrayAdapter<RSSItem>(this,android.R.layout.simple_list_item_1,feed.getAllItems());
itemlist.setAdapter(adapter);
itemlist.setOnItemClickListener(this);
itemlist.setSelection(0);
}
【问题讨论】:
-
最好使用 AsyncTask 并保持 ProgressDialog 一段时间,直到数据被加载。
-
为什么不能将 RSS 阅读器分成一个服务(Android 服务或简单的单例服务),在应用初始化时开始加载提要?分离视图和模型逻辑通常是可取的。
标签: android android-activity load preload