根据服务器响应创建多个处理程序并管理那里的状态

2023-12-15

当我的应用程序收到服务器的响应时,我想创建多个处理程序并可运行。

处理程序最多可以有 4 个,最少可以有 1 个。

Problem

实际上我想将单元格屏幕划分为不同的部分,划分后我需要在屏幕的所有部分显示不同类型的数据。在这些部分中,每个部分都有多个项目要显示。

e.g!用户想要分割屏幕两部分

part one包含视频、图像和视频。 (3) 第一部分中的项目

part two包含图像和视频。 (2) 第二部分中的项目。

每个项目需要显示特定时间段(用户定义)

当一项的时间完成时,应用程序需要显示列表中的下一项。

我尝试过什么

据我所知,有一种方法可以实现这一目标

我需要创建多个处理程序来处理所有部分。

我尝试使用 for 循环创建新的处理程序并保存它的实例,但这样做我无法管理何时以及哪个屏幕部分需要更新。

请任何人告诉我如何动态创建任意数量的处理程序。并保存这些状态。

private void createStreamHandler(){

        for(int i=0; i < serverResponse2.vMedialist.size(); i++){
            final int index = i;
            Handler hadler = new Handler(); 
            hadler.postDelayed(myRunnable = new Runnable() {

                public void run() {

                    if (sDuration[0] <= 0){
                    // check if wait counter expired? get show next media and gets
                    // its display duration
                        sDuration[0] = runPlaylist(serverResponse2.vMedialist.get(index), index);
                    }

                    sDuration[0] -= 5;
                    handler.postDelayed(myRunnable, 5000);
                }
            }, 500);

            streamsHandler.add(hadler);
            streamRunnable.add(myRunnable);
        }
}



private int runPlaylist(ArrayList<Media2> mediaList, int index){

        Log.e("mediaList ", "mediaList size at " + index +" = " + mediaList.size());
        return mediaList.get(index).duration;
    }

每次我获取数组列表最后一个索引的大小时。并且只有最后一个处理程序继续运行。请帮助我,我被困住了。

我怎样才能跟踪所有处理程序?

还有其他方法可以管理处理程序吗?

我希望我已经很好地解释了这个问题。请提出任何解决方案。谢谢。


如果我正确理解你的代码,你需要替换

handler.postDelayed(myRunnable, 5000); 

with

handler.postDelayed(this, 5000); 

because myRunnable是您创建的最新 Runnable。并且您的所有处理程序都将其发布而不是他们自己。

EDIT:
您将其编号存储在每个处理程序中 -index。您可以添加方法

void handleResponse(int index, Object someData)

到你的类,它创建处理程序。之后每个处理程序都可以调用handleResponse(index, data)通知一些更改。

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

根据服务器响应创建多个处理程序并管理那里的状态 的相关文章

随机推荐

  • 无法改变加速度计的速率

    我必须从 Android 手机收集加速度计数据 因此我编写了一个小程序来做到这一点 经过一些测试 我发现我的 Nexus S 加速度计的速率为always手机处于活动状态时每秒 50 个值 睡眠状态时每秒 6 个值 带有PARTIAL WA
  • spring-boot 属性注入在自定义 @Configuration 类中不起作用

    我想创建一个 DatabaseConfig 类来设置我的数据库相关内容 EntityManager DataSource TransactionManager 并获取我使用的属性 Value property name on String
  • GNU Emacs 中的公司后端

    在 Emacs 中 我已经安装了MELPA company irony c header包裹 然后我在网上做了一些研究 显然为了配置这个包 我认为 激活 它的意思是 我必须添加以下内容 defun company my backend co
  • 是否可以通过 Lync SDK(2013 或其他版本)设置呼叫转移?

    我在一家大型机构的信息系统部门工作 处理我们电话的Lync服务器是由另一个部门处理的 任何需要他们合作的解决方案都是不可行的 这排除了任何需要额外权限 从 Lync 服务器 SEFAUtil 等运行的解决方案 我的个人 Lync 2013
  • 插入 OS X 系统调用

    我需要介入 调用我的函数而不是原始函数 一些 OS X 系统调用是为了克服闭源软件中的缺陷 最好 生成的解决方案可以在 10 5 Leopard 及更新版本下工作 但我might如果论证足够有力 可以要求 10 6 雪豹 最好 生成的解决方
  • 如何加速 python 的“turtle”函数并使其在最后停止冻结

    我用python写了一个乌龟程序 但是有两个问题 对于较大的数量来说 它的速度太慢了 我想知道如何才能加快乌龟的速度 它在完成后冻结 单击时显示 没有响应 到目前为止 这是我的代码 import turtle Takes user inpu
  • std::cin.clear() 无法将输入流恢复到良好状态

    为了测试 bool i o 我尝试运行这个短程序 include
  • ROW_NUMBER 在 CTE 中不起作用

    我正在研究报告 似乎 row number 在递归中不起作用 我已经简化了这个例子 从有 3 条记录的表中 declare sometable table id int id2 int insert into sometable selec
  • Pandas 计算数据框中列本身内的数据

    I have come up with a problem where my data in the column has been recorded as 90 2 91 3 90 4 etc My motive here is to a
  • find_or_create_by_id 的最佳方法,但如果找到记录则更新属性

    我正在寻找一种干净的方法来创建具有一组属性的记录 如果记录不存在 以及 如果记录确实存在 更新其属性 我喜欢 find or create by id 调用中块的语法 这是我的代码 categories Highrise DealCateg
  • 如何从邻接矩阵matlab得到距离矩阵

    我有一个邻接矩阵 将其称为 A 大小 n n Where A k j A j k 1 if k j在 1 跳中连接 现在看来 如果我采取 Dist double A double A gt 0 getting all two hops co
  • 如何在 C# 中以 Fuzzy 方式 String.Contains() ?

    我有一个要在过滤时搜索的人员列表 每次用户输入搜索字符串时 都会应用过滤 有两个挑战需要考虑 用户可以输入部分姓名 用户可能会输入错误 第一个问题只需通过搜索子字符串即可解决 例如String Contains 第二个问题可以通过使用模糊实
  • 如何将 $state 变量传递给另外 2 个同级 $states?

    Plnkr https plnkr co edit Brmcxd2LjGVJ6DXwuJtF p preview 建筑学 login gt container 包含 dashboard and feed dashboard包含 ticker
  • 向数据框中添加一列重复值

    我有一些金融交易的季度数据 所以是一个相当大的数据集 我现在想将以下值一遍又一遍地添加到新列中 12 11 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 该列应如下所示 A 12 11
  • 在 Altair 绘图上,您可以更改选项(例如下拉菜单、单选按钮)的显示位置吗?

    使用 Altair 在 Python 中绘图 我有 2 个并排绘制的图表 右侧的绘图包含一个下拉选择菜单 默认情况下 下拉菜单显示在图的左下角 我想将菜单移到与其链接的右侧图下方 我在文档中没有看到任何内容selection single
  • C# - 用于登录防火墙的套接字

    我编写了一个应用程序来自动连接到我们不同的防火墙 它们都使用相同的前端 我们远程登录到 IP 他们会给出登录或注销消息 并要求输入用户名或密码 我使用了这段代码 public static void ConnectToFirewall st
  • 加载屏幕和导航栏页面

    我尝试制作一个加载屏幕 就像这个很好的例子一样http daattali com 3838 loading screen 不幸的是 我不知道如何用 navbarPage 达到完全相同的效果 在下面这个稍作修改的应用程序中 有两个选项卡面板
  • 二维数组中 1 岛的最大面积

    The question内容如下 给定一个由 0 和 1 组成的非空二维数组网格 一个岛就是一个组 1 的 代表陆地 连接 4 个方向 水平或 垂直 您可以假设网格的所有四个边缘都被包围 水 求给定二维数组中岛的最大面积 如果有 没有岛屿
  • 将所有嵌套 li 的宽度设置为最宽 li 的宽度

    如何使嵌套的 li 具有相同的宽度 当我使用下面的代码时 每个嵌套的 li 的宽度仅与其文本 边距一样宽 我希望所有的 li 都与父 ul 下最宽的 li 一样宽 eg ul li href title Menu a Menu a li l
  • 根据服务器响应创建多个处理程序并管理那里的状态

    当我的应用程序收到服务器的响应时 我想创建多个处理程序并可运行 处理程序最多可以有 4 个 最少可以有 1 个 Problem 实际上我想将单元格屏幕划分为不同的部分 划分后我需要在屏幕的所有部分显示不同类型的数据 在这些部分中 每个部分都