我到處搜索這個,但沒有人似乎有答案。如何預加載活動?
我的簡單問題是:
有沒有預加載活動的方法?我需要這個,因爲我使用一個選項卡,並且選項卡有多個活動。我的一項活動是一個rss閱讀器,加載非常困難(大約2-3秒)。
我在網上發現的所有內容都是一個笑話。大家都有意見,但沒有人能指出你的示例代碼。等待答案,謝謝!
這是加載進代碼:你必須使用ASYC任務http://developer.android.com/reference/android/os/AsyncTask.html在活動的OnCreate功能
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服務或一個簡單的單件服務),它開始在應用程序初始化時加載這些提要?分離視圖和模型邏輯通常是可取的。 – jkschneider