gpt4 book ai didi

android - 如何预加载 Activity ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:25 24 4
gpt4 key购买 nike

我到处搜索这个,但似乎没有人有答案。

我的简单问题是:

有没有办法预加载 Activity ?我需要这个,因为我使用一个选项卡,一个选项卡有多个 Activity 。我的一项 Activity 是 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);

}

最佳答案

您必须使用 Asyc Task http://developer.android.com/reference/android/os/AsyncTask.html在 Activity 的 OnCreate 函数中。请记住,您必须创建一个接口(interface)(此处我使用了 EVRequestCallback),您需要通过该接口(interface)在完成 rss 加载后更新 Activity 的 UI。以下是 RSS 提要异步任务的示例代码。

public class RetrieveRssAsync {


public RetrieveRssAsync(Context ct,EVRequestCallback gt)
{

}

public static abstract class EVRequestCallback {
public abstract void requestDidFail(ArrayList<EventItem> ei);
public abstract void requestDidLoad(ArrayList<EventItem> ei);
}
public static class RetrieveEventFeeds extends AsyncTask<Void, Void, ArrayList<EventItem>>
{
Context mContext;
private EVRequestCallback mCallback;
public RetrieveEventFeeds(Context ct,EVRequestCallback gt)
{
mContext= ct;
mCallback=gt;
}
private ProgressDialog progress = null;

@Override
protected ArrayList<EventItem> doInBackground(Void... params) {

return retrieveRSSFeed("--URL of RSS here--",this.mContext);


}

@Override
protected void onCancelled() {
super.onCancelled();
}

@Override
protected void onPreExecute() {
progress = ProgressDialog.show(
mContext, null, "Loading ...",true,true);

super.onPreExecute();
}

@Override
protected void onPostExecute(ArrayList<EventItem> result) {
//setListAdapter();
mCallback.requestDidLoad(result);
progress.dismiss();
//Toast.makeText(this.mContext, "current done", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}

@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}


}

关于android - 如何预加载 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com