问题标签 [android-handler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 应用程序是否存在?安卓(处理程序问题)
isRunning 是一个变量,在我的活动中,只要它调用 onStop 或 onPause 方法,它就会变为 false。但是它不起作用,即使我关闭我的应用程序对话框仍然想添加一个窗口并且我收到错误。
android - 在我的活动中不会调用处理程序
我在我的活动中创建了一个处理程序。处理程序将存储在应用程序对象中。
我的计划是当我在我的服务中 setEmtpyMessage 时将调用这个 handleMessage。该服务从应用程序对象中检索处理程序。
我检查了日志,但没有句柄消息,因此我的计划似乎不起作用。每次我的服务完成工作时,我都想更新一个文本字段。
android - Android:什么时候应该使用 Handler(),什么时候应该使用 Thread?
当我需要异步运行某些东西时,例如长时间运行的任务或使用网络的逻辑,或者出于任何原因,启动一个新线程并运行它可以正常工作。创建一个处理程序并运行它也可以。有什么不同?我应该什么时候使用每一个?使用 aHandler
而不是 a的优点/原因是Thread
什么?
PS。- 为了这个问题,让我们忽略AsyncTask
. -Handler().postDelayed
用例对我来说很清楚,为了这个问题,让我们假设我需要立即开始任务。
android - 错误 java.lang.IndexOutOfBoundsException:无效的索引 0,Android 适配器中的大小为 0
我有一个在我的活动中扩展 BaseAdapter 的适配器。在适配器中,我列出了记录。当用户单击任何记录时,将列出选项。这些选项是“发送”和“删除”。删除选项从列表中删除记录并发送选项发送记录到服务器。当发送被按下时,异步任务被启动。对于删除操作,我在对话框中使用处理程序。(是或否)。
我的问题是,如果我在一条记录中按删除,而其他记录正在发送,应用程序崩溃,我得到了这个异常;
我检查了很多次尺寸,尺寸不是0。我确定尺寸没有问题。
此代码来自我的删除操作;
我的 asyntask 非常典型。
我的问题是为什么我得到这个异常“索引 0,大小 0”?这个大小不是 myarraylist 大小。
如何修复此代码以及此大小的来源是什么?
此外,如果我在删除中使用 asynctask 而不是处理程序,则会出现“无法在未调用 Looper.prepare()] 的线程内创建处理程序”异常。所以我不能在对话框中放入 asyntack。
android - 使用回调和处理程序更改 Android 中的 UI 元素
我有一个问题,我相信解决方案相对简单,但我错过了一些东西。基本上我的程序从用户端的流程是我有一个“主屏幕”,其中屏幕上的按钮是半透明的并且没有响应,直到从下拉菜单(微调器小部件)中选择一个项目。在代码方面,我在 XML 文件中定义了布局,然后用 Java 编写所有相关联的内容。所以在 onCreate() 方法中,我已经像这样初始化了按钮:
这很好用,但我想在从我的微调器中选择一个项目之后设置一些 onClickListeners。所以我的活动类实现了 onItemClickListener 并且我的代码中有以下回调:
boolean itemSelected 在活动类中具有全局范围,Toast 用于调试目的而不是必需的。但我遇到的问题是,当我在微调器上的项目(位置 0 以下)被选中后尝试更改按钮时。我有一个这样定义的消息处理程序:
这个处理程序正常工作,直到我调用了如下所示的 activateButtons() 方法:
每当我尝试与回调或处理程序之一中的 UI 元素进行交互时,我都会收到 Java NULL 指针异常。我很确定这是我错过的相当简单和基本的东西,但我似乎无法发现问题。如果有人有任何想法,我很想听听你的意见 :) 将 SJ
android - Looper 如何知道将消息发送给 Handler?
问题是,我在哪里告诉我的线程将mHandler用于Looper?
谢谢你。我正在使用以下代码:
java - 为什么使用Handler时可能会发生内存泄漏
如果我们使用非静态 Handler 会有一个警告:'handler 应该是静态的,否则容易出现内存泄漏。
我已阅读以下链接,并且知道它们的含义。
https://stackoverflow.com/a/7909437/619424
https://stackoverflow.com/a/11336822/619424
但是在阅读了Handler.java、Message.java和Looper.java的来源之后,我很困惑......
在Looper.loop()方法中,我们可以看到以下语句:
该变量msg
包含一个名为target
对应的引用Handler
。当 Message 被Looper
,msg
调度到Handler
( target
reference) 时,msg 被回收。
Message.recycle()方法调用Message.clearForRecycle()方法,我们看到:
target
设置为null
,这意味着,Message
不包含对 的引用Handler
。非静态Handler
将被 GC,Activity
和View
s 都将被 GC。
所以我的问题是,为什么会发生内存泄漏?
android - 未处理 Android 处理程序操作
我试图将消息从线程传递给处理程序,但是,处理程序 switch 语句的处理程序操作永远不会被处理。
这是我的处理程序:
这是将消息传递给 Handler 的 Thread run() 方法。Thread 是一个内部类。
我不确定为什么没有执行这些行动。
android - 从在不同线程上运行的其他一些类更新 Android 活动的 UI
我有一个带有 Listview 和附加到它的适配器的活动。我有一个同步数据并保存它的类。(我认为我们不应该关心数据来自哪里)并且它在不同的线程上运行。现在我想知道更新适配器的干净方法,但是我们不应该从该类调用任何活动函数,因为它在不同的线程上运行。
我知道的一种方法是在活动中创建处理程序并将其传递给其他类并从那里使用它。但我想知道活动是否在后台,然后活动的函数可以由 UI 线程调用,或者只有在活动进入前台时才能调用。
我不想错过任何更新,并且想在前台更新活动。
android - Android - 需要不断变化的文本实施建议
我有一个TextView
显示用户拥有的点数。用户积分被填满时间到他们的最大值。我想要我的TextView
每 20 秒。显示该点完全填充的剩余时间。(例如,如果TextView
显示“你有 500 分”,我希望它在 20 秒后更改为“将在 4:17 分钟内完全填写”,此文本将显示 10 秒,然后变回)。
我想到了两种方法来做到这一点:
1)使用Handler
and Runnable
,每次文本更改以添加另一个可运行任务。
2) 用 做点填充AsyncTask
,文字会随着onProgressUpdate
方法改变。
3)您建议的任何其他方式(并且认为更好)。
提前感谢您的帮助,
丹