在哪里创建和使用 ScheduledThreadPoolExecutor、TimerTask 或 Handler?

2023-12-04

我需要让我的 RSS Feed 阅读器每 10 分钟检查一次 feed 中是否有新帖子,然后在有新帖子时解析它们。我还需要大约每分钟更新一次用户界面。

我从不同的来源读到和听到了不同的事情。我目前的理解是我可以使用ScheduledThreadPoolExecutor创建两个调度线程,其中一个需要Handler用于更新用户界面。我不确定这些类的最有效使用方式是什么TimerTask.

我也非常不确定在哪里创建这些的子类。一位朋友建议延长TimerTask作为我的内部类FeedParser类以使其更简单。但是,要以这种方式实现它,我必须使用run()方法用于TimerTask而不覆盖它,这意味着我不能简单地使用需要运行的函数所需的参数。

简而言之,为此安排任务的最佳方法是什么?我将在哪里实施这些任务?


我更喜欢使用 ScheduledThreadPoolExecutor。一般来说,如果我正确理解您的需求,所有这些都可以在您的活动中实现,不需要 TimerTask 和 Handler,请参阅下面的示例代码:

public class MyActivity extends Activity {
  private ScheduledExecutorService scheduleTaskExecutor;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    scheduleTaskExecutor= Executors.newScheduledThreadPool(5);

    // This schedule a task to run every 10 minutes:
    scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
      public void run() {
        // Parsing RSS feed:
        myFeedParser.doSomething();

        // If you need update UI, simply do this:
        runOnUiThread(new Runnable() {
          public void run() {
            // update your UI component here.
            myTextView.setText("refreshed");
          }
        });
      }
    }, 0, 10, TimeUnit.MINUTES);
  } // end of onCreate()
}

请记住在 Activity.onDestroy() 中正确完成/关闭可运行任务,希望有所帮助。

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

在哪里创建和使用 ScheduledThreadPoolExecutor、TimerTask 或 Handler? 的相关文章

  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

  • 需要一种好方法让用户选择“收件人”来发送电子邮件

    我有一个网站 用户可以从中发送电子邮件 我有一种模仿基本形式 To
  • 客户端从哪里获取尚未添加到注册表的远程类的定义?

    我已经成功地创建了一个 RMI 应用程序 该应用程序非常成功地完成了我需要它完成的任务 但是我在了解客户端获取远程对象定义的位置时遇到了一些麻烦 例如 我有一个向 rmiregistry 注册自身的服务器 允许客户端调用其上的方法 Unic
  • 到达字符串中的特定单词

    嗨 我有一个像这样的字符串 word1 to word2 tab word3 tab word4 tab word5 tab word6 我需要从字符串中提取第三个单词 我想逐个字符地阅读并在阅读第二个选项卡后获取单词 但我想这效率很低 您
  • 浮动元素在包含块之外?

    我是 HTML CSS 的初学者 只是一些关于浮动元素的问题 下面是代码 section border 1px solid blue div margin 5px width 200px height 50px left float lef
  • Firebase 静态加密

    我真的很喜欢使用 Firebase 我想在新应用程序中使用它 但该应用程序会让用户上传敏感信息 我知道 Firebase 使用 https 但环顾四周 Firebase 似乎尚未提供静态加密 有没有办法解决这个问题 例如使用 Firebas
  • 转储 x86 CPU 的 TLB 缓冲区内容

    是否可以从 TLB 翻译后备缓冲区 这是 CPU 中的特殊缓存 获取翻译列表 从虚拟页到物理页 我的意思是现代 x86 或 x86 64 我想以编程方式完成此操作 而不是使用 JTAG 并将所有 TLB 条目移出 Linux内核没有这样的转
  • 收到警报 此评论尚未发布到 Facebook。发表评论

    我正在使用 Facebook 评论插件 当我尝试写评论时 它总是给我以下消息 该评论尚未发布到 Facebook 发表评论 我怎样才能删除它 您的链接网址已列入黑名单 Facebook 要求向用户证明其墙上的帖子
  • 如何使用SQL查询Microsoft Office Access中的元数据?像 SQL Server sys.tables、sys.columns 等

    我对 Access 完全陌生 但对 SQL Server 很熟悉 我想知道是否可以使用 SQL 查询 Microsoft Office Access 中的元数据 就像 SQL Server 的 sys tables sys columns
  • 从xsd获取html表单

    我有一个相当复杂的 xsd 文件 它描述了一些对象 这并不重要 但它是 DATEX II 标准 您知道是否有一种自动方法来创建 html 表单 就像 向导 一样指导用户创建 xsd 中描述的 xml 对象 这个问题的答案取决于目标用户群 您
  • QuartusII 14.1.0 Debian Linux 崩溃

    我无法在 64 位计算机上将 Quartus 14 1 0 与 Linux Debian wheezy 和 Jessie 一起使用 如果我在控制台上启动它 我会收到以下消息 user fpgaformation opt altera 14
  • 在同一个应用程序中从右到左和从左到右语言?

    据我了解 苹果不允许应用程序商店上有两个不同语言的相同应用程序 但是如果一种语言是从左到右 另一种语言是从右到左怎么办 这意味着不同的菜单 不同的项目定位 不同的用户界面等 甚至连 Segue 也不同 显然我不能为此使用常规本地化 有没有解
  • FindWindow 查找窗口Ex

    我编写了一个程序 用于在另一个程序中查找一个框并将焦点设置到它 完成此操作后 它将发送密钥并保存到此框中 I am using Findwindow and FindwindowEx to locate the box but I have
  • 无法获取存储锁定文件上的锁定

    我正在构建一个带有嵌入式 Neo4j 和 Spring Data 的项目 并且我遇到文件锁定问题 我收到异常 Caused by org neo4j kernel StoreLockException Unable to obtain lo
  • Spring boot在配置类中注入EntityManagerFactory

    我正在使用 Spring Boot 我想将 Spring 与 Hibernate 集成 我想制作一个会话工厂 bean 供进一步使用 但我无法自动装配 EntityManagerFactory 我无法仅在配置类中自动装配它 在其他类中它可以
  • 如何使用 MySQL 查询查找文本字段中的第一个数字?

    我喜欢只返回存储在数据库表列中的文本的第一个数字 用户已将页面范围放入 p 2 5 或 第 2 至 5 页 或 2 5 等字段中 我对这里的 2 感兴趣 我尝试过了 SELECT SUBSTR the field LOCATE 2 the
  • 获取未定义索引:REQUEST_URI - 在 Laravel 中运行 Artisan 命令时

    每次我尝试在 Laravel 上运行 artisan 命令时 我都会收到以下错误 我位于项目目录中 例如 我运行这个命令 php artisan make migration create stats table 我收到此错误 ErrorE
  • 从 C# 调用 Excel 宏时出错

    我正在尝试使用以下命令从 Excel 文件调用宏C 4 5 我的Excel版本是2010 当我尝试调用宏时 出现以下错误 Cannot run the macro MacroName The macro may not be availab
  • 如何居中对齐 UICollectionView 的单元格?

    我目前正在使用UICollectionView对于用户界面网格 它工作得很好 但是 我想启用水平滚动 网格支持每页 8 个项目 当项目总数为 4 时 这就是启用水平滚动方向的情况下项目的排列方式 0 0 x x 0 0 x x 这里 0 g
  • 单色计时器

    我想在 Android 2 2 的 C monodroid 程序中使用计时器 但它不起作用 这是我的代码 using System using System Timers using Android App using Android Co
  • 在哪里创建和使用 ScheduledThreadPoolExecutor、TimerTask 或 Handler?

    我需要让我的 RSS Feed 阅读器每 10 分钟检查一次 feed 中是否有新帖子 然后在有新帖子时解析它们 我还需要大约每分钟更新一次用户界面 我从不同的来源读到和听到了不同的事情 我目前的理解是我可以使用ScheduledThrea