如何预加载 Activity?

2024-01-27

我到处寻找这个问题,但似乎没有人有答案。

我的简单问题是:

有没有办法预加载活动?我需要这个,因为我使用一个选项卡,并且一个选项卡有多个活动。我的活动之一是 RSS 阅读器,它加载非常困难(大约 2-3 秒)。

我在网上找到的都是一个笑话。每个人都有自己的观点,但没有人能给你提供示例代码。等待答复,谢谢!

这是加载 feed 的代码:

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);

        }

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

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);
            }
        }


    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何预加载 Activity? 的相关文章

  • 通过代码在创建时突出显示 ListView 项目

    我想在创建 listView 时突出显示 ListView 的第一行 0 我尝试了不同的方法 就像您在注释代码中看到的那样 但没有任何效果 这很奇怪 因为 OnItemClickListener 中的突出显示工作正常 它通过 xml 选择器
  • 使用同一个侦听器的多个活动

    我有 4 个活动 它们都包含一个 xml 页脚 其中包含 4 个按钮 每个活动一个 我现在想为这些按钮设置 onclicklistener 它是页脚中的自制菜单 问题是 如何使用侦听器以便重用代码 我有两个想法 创建一个实现 onclick
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • Android Camera.takePicture() 有时不返回?

    我正在编写一个Android 拍照应用程序 该代码在 onPreviewFrame byte data Cameracamera 中从预览中获取帧后进行一些处理 问题在于 android hardware Camera 的函数 takePi
  • Cordova - 启动后出现白屏,控制台中没有例外

    我已经离开我的 Cordova 应用程序一段时间了 但昨天刚刚进行了一次新的克隆 发现它出现了 死机白屏 症状 启动画面显示 程序加载 然后我就得到一个空白屏幕 更多细节 CLI 科尔多瓦 6 1 1 安卓 5 1 1 ios 4 1 1
  • 当我单击“完成”键时,Android OnEditorActionListener() actionId 给出 0

    我创建了一个键盘 当用户输入数字时 它会输入特定的 EditText 但是当用户单击Done关键 它没有去setOnEditorActionListener但它关闭了键盘 这是我的代码 final EditText txtQty new E
  • VOIP通话录音

    我正在开发一个在 android 中录制 VOIP 通话的项目 我没有找到任何解决方案 有很多应用程序支持手机上的 VOIP 录音 我找不到任何教程和帮助 立方体通话记录器 https play google com store apps
  • 如何使用 RecyclerView 创建此布局?

    我正在尝试使用这种类型的布局创建回收器视图 这些项目是字符串 可以以不同的大小出现 我不知道每行中有多少项目 我可以使用 StaggeredGridLayoutManager 来做到这一点吗 该图像只是一个假示例 每行可以有更多项目 您可能
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • java.lang.IllegalAccessError:预验证类中的类引用在运行测试项目时解析为意外实现?

    在实施项目工作正常之后 我使用第三方库 zxing 实施了项目 然后在我编写了一个测试项目对我的项目进行单元测试之后 运行测试项目后 主项目 类及其方法没有给出任何信息错误 但如果在主项目的该方法中使用任何 zxing 框架类 则会在运行时
  • Toast 消息消失后​​完成活动吗?

    有谁知道 是否有可能对 Toast 消息执行某些操作 在我的情况下完成活动 将被关闭 您只需创建一个Thread持续时间只要Toast显示 然后您就可以完成您的Activity public void onCreate Bundle sav
  • Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

    更新 我通过添加 previousMarker 对象解决了性能问题 因此 只有先前单击的标记将被删除并替换为默认图标 但是 当我单击标记时 信息窗口仍然不显示 我有一个地图视图并在上面设置了一些标记 我想要的是 当我单击一个标记时 它将其图
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一
  • 在数组列表中过滤 Filterable 不取消之前的过滤

    我看过过滤器方法文档 其中显示调用过滤器会取消所有先前未执行的过滤请求 并发布一个稍后将执行的新过滤请求 但我收到的实际回调有些不同 在我的实现中 它不会取消先前的过滤器请求并调用publishResults 最近一次搜索条件后的上一次搜索

随机推荐

  • 如何在代码中查找hadoop作业的作业ID?

    我有一个有循环的 Hadoop 程序 在循环的每次迭代中都会创建一个作业 如何在代码中找到职位 ID 当您提交您的Job例如 您可以使用以下命令获取有关作业 ID 的信息getJobID method Configuration confi
  • 我应该一次加载数据库结果还是发出多个请求?

    我想用以下列过滤大型数据库 名称 最大高度 最小高度 范围 最大角度 最小角度 我想过滤它以匹配用户之前可以插入的某些条件 例如如果用户输入最大高度 80厘米 它应该显示最大高度小于80厘米的所有条目的列表 用户还可以输入更多条件 输入看起
  • 如何避免 TailerListener 中的旧日志消息

    我正在使用 Apache Commons Tailer API 来监视日志文件 每当我重新启动应用程序时 也会显示旧的日志消息 相反 只应显示新的日志消息 如何避免这种获取旧日志消息的行为 你用过吗4 参数Tailer构造函数 http c
  • 为什么C++运算符重载要求“至少有一个类类型的参数”?

    C Primer 第 5 版 第 14 1 章写道 运算符函数必须是类的成员 或者至少具有一个类类型的参数 例如 string hello world 编译 hello world 没有 当我想要超载时 在两个 C 弦上 std strin
  • Gmail API 错误 429rateLimitExceeded 即使没有任何活动

    我有一个与 Gmail API 集成的 NodeJS 应用程序 当我尝试访问 Gmail API 时 出现以下错误 error errors domain usageLimits reason rateLimitExceeded messa
  • 如果Android应用程序在可调试的情况下发布会发生什么?

    黄金法则是在向公众发布 Android 应用程序之前将可调试选项设置为关闭 如果我打开 忘记关闭 此选项会发生什么 我的意思是 它会如何向用户体现 我测试了一下 没有发现任何区别 它如何向用户体现 普通用户不会注意到其中的差异 顺便一提 支
  • Python:Selenium Firefox Webdriver 失败并出现错误:“无法加载配置文件...WARN addons.xpi...”

    我正在尝试运行以下 Python 代码来通过 Selenium 创建 Firefox Webdriver 窗口 from selenium import webdriver driver webdriver Firefox driver g
  • 如何将阿拉伯数字转换为int?

    我在 C 中工作一个项目 需要使用阿拉伯数字 但它必须作为整数存储在数据库中 我需要一个解决方案将阿拉伯数字转换为 C 中的 int 请问有什么解决办法或帮助吗 提前致谢 来自评论 我有阿拉伯数字 如 必须转换为 1 2 3 或 转换为 2
  • 将具有子项的实体类型发布到 (MVC Web Api) OData 服务

    我一直在寻找以下问题的答案 但到目前为止还没有找到 OData 标准是否支持执行包含带有子实体对象的实体对象的 POST 请求 如果是这样 ASP NET MVC Web Api OData 框架 EntitySetController 支
  • 唯一ID计数器

    过去几天我发布了几个有关我正在开发的 Google Apps 脚本 Web 应用程序的问题 到目前为止 Serge 在这里非常有帮助 该脚本的帖子是here https stackoverflow com questions 1530251
  • Intellij 警告:从未使用该方法的返回值

    我有一些代码看起来没问题 但 Intellij IDEA 警告其许多方法return价值观 从未使用该方法的返回值 这是下面的实际代码 一个构建器类 public static class StreamParserBuilder optio
  • Google Colab 中的 Tensorflow Federated 教程在初始化代码片段中给出错误

    这是开始教程之前需要运行的单元 test skip true tensorflow federated nightly also bring in tf nightly which can causes a duplicate tensor
  • facebook登录空指针异常android

    我通过 stackoverflow 进行了很多搜索 但找不到解决我的问题的答案 因此我发布此内容 我有一个示例 Android 应用程序 我尝试在其中使用 facebook 登录 以下是我遵循的步骤 环境 Android Studio An
  • 使用 jQuery 检查加载时是否已选中复选框

    我目前正在使用 some box click function main box toggle 效果很好 除非复选框是保存复选框状态的页面的一部分 如果将复选框保存为选中状态 则主框 单击该复选框时会显示 在重新加载时隐藏 并且仅在单击该复
  • AngularJS $http 拦截器

    JavaScript 代码 commonApp angular module commonApp config function httpProvider httpProvider interceptors push myHttpInter
  • 导航抽屉组标题 - 如何设置?

    我有一个菜单 其中包含如下所示的组 是否可以为每个组设置标题 我知道这对于子菜单是可能的 但是第一级组呢 menu menu
  • 在redis服务器上设置spring会话

    我正在使用 Spring Boot 编写我的其余 api 我正在尝试维护 redis 服务器上的用户会话 Redis 已启动并在默认端口上运行6379 我使用生菜罐连接到 redis 服务器 但似乎我的会话没有在 Redis 服务器上设置
  • Pandas 对两个数字之间的列的操作

    目前使用 Pandas 和 Numpy 我有一个名为 df 的数据框 假设我有以下数据 如何根据 Between 子句为第三列提供一个值 我想将其视为矢量化方法如果可能的话 保持我已有的速度 我尝试过 lambda 函数 但坦率地说 我不明
  • 如何获取 PHP 数组中的最后 n 个项目作为另一个数组?

    如何在 PHP 中获取另一个数组的最后 n 个项目的数组 n等于您想要结束的项目数 arr array slice old arr n
  • 如何预加载 Activity?

    我到处寻找这个问题 但似乎没有人有答案 我的简单问题是 有没有办法预加载活动 我需要这个 因为我使用一个选项卡 并且一个选项卡有多个活动 我的活动之一是 RSS 阅读器 它加载非常困难 大约 2 3 秒 我在网上找到的都是一个笑话 每个人都