问题标签 [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 - Android 处理程序未收到消息
在我的 android 应用程序中,我创建了 2 个处理程序。一个处理程序收到消息并等待(调用 wait();)。此时,如果我将消息发布到第二个处理程序,它没有接收。一段时间后,我收到对话框说应用程序没有响应“强制关闭”或“等待按钮”。
我认为由于一个处理程序中的 wait() ,阻止了第二个处理程序接收消息。
请建议我解决这个问题。
android - 为什么要使用 AsyncTaskLoader 和 LoaderManager,而不是简单的 Handler?
从 UI 线程运行异步任务然后修改 UI 是 android 开发中的一个常见问题,所以我决定花一些时间,研究并尝试不同的技术并找到最适合我的技术。
我认为的重要因素:
- 应该可靠地工作
- 代码可读性
Activity
或者Fragment
应该尽可能多地保持线程管理的清洁
以下是我对各种方法的印象总结(可能是错误的,有些只是意见):
异步任务
当我第一次进入 Android 时,我使用的是 simple AsyncTask
without :LoaderManager
- 有间歇性问题,我自己编写
AsyncTaskManager
了活动生命周期来管理它们。 - 任务数量有一些限制,之前已经报告过内存泄漏。
- 这些最大的问题是它们使我的代码非常复杂,并且简化代码首先破坏了使用它们的目的。
AsyncTaskLoader 和 LoaderManager
这似乎是推荐的方法,所以我研究了一下:
- 在阅读了这些之后,似乎推荐这种方法的主要原因是因为它管理具有
Fragment
生命周期的任务,并且据我了解基本上只是在必要时重新启动任务。在活动重新启动后,似乎无法接收在活动重新启动之前启动的任务的结果。 - 所有的任务参数似乎都必须是
Parcelable
或Serialiazable
进入一个Bundle
对象。
处理程序、线程和消息
这是我确定的方法:
- 易于实施,高度可定制。
- 您可以访问执行任务的线程:设置优先级、设置用于调试的线程名称、设置守护进程等。
- 似乎比使用 AsyncTasks 响应更快,基于我多次单击按钮并观察结果和线程闪烁的眼睛测试;)我可以对此进行基准测试。
- 要处理生命周期问题,可以编写一个管理消息的单例类(在进程处于活动状态时持续存在)。当给定活动的处理程序未设置时存储它们,然后如果它要求其丢失的消息,则将它们转发给活动处理程序。这意味着任务不必使用相同的参数重新启动,这对于非幂等任务至关重要。
所以我得出的结论是,使用Handler
,Threads
和Messages
是一个更好的解决方案,但我确信我遗漏了一些东西,因为我看到的几乎所有地方都建议使用该AsyncTaskLoader
方法。我错过了什么?
感谢您的输入。
android - 更新 TextView 的文本导致 GC_CONCURRENT 问题
我的问题
我有一个像这样初始化的计时器并调用一个方法来更新一个对象。问题是每次触发计时器时,我都会在 LogCat 中获得 GC_CONCURRENT 输出。
这是我的计时器初始化以及任务。
所以这被调用一次,不再被调用,(除非定时器停止并重新启动)。
我的更新方法看起来是这样。
然后这是我的处理程序,我用它来处理从这个线程获取值到我的 UI 线程。
我不认为这是问题所在。我认为问题出在我实际更新 TextView 的片段中,因为当我将其注释掉时this.durationValueTxtView.setText("TIME");
,它不再发生。
我的问题
在我的处理程序创建、计时器创建、计时器任务创建、文本视图参考方面,我是否遗漏了一些东西?任何事物?
提前致谢
android - 我应该使用 AlarmManager 还是 Handler?
我正在编写一个不断轮询设备传感器的应用程序,并且每隔一段时间应该将一些统计信息写入文件。这可能快到一秒钟一次,也可能慢到一分钟一次。我应该使用Handler's
postDelayed()
方法还是只安排它AlarmManager
?
android - 在从服务调用的线程内使用处理程序
我有一个创建处理程序的线程。从服务调用线程。问题是因为它是从服务调用的,所以我不能使用 Activity.runOnUiThread()。我只能访问上下文而不是活动。
创建处理程序时出现此错误,
这是代码:
代码可能看起来很奇怪,因为我删除了一堆语句。
android - 带有背景的android警报器
在我的一个应用程序中,我提供了多个警报并且它工作得很好。我想通过一些与互联网相关的后台任务来扩展该警报功能。当为特定给定值设置警报时,应用程序开始每隔 30 秒从我的服务器检查该值。每当返回相同的值时,警报就会响起。我的服务器每 30 秒更新一次新数据。
现在我正在使用广播接收器和不同的待处理意图 ID 设置多个警报。我应该如何开始实施?我对这个警报管理器、服务、接收器、处理程序、异步任务应该使用哪个感到困惑?
任何帮助表示赞赏。谢谢。
android - 处理数据 IO 吞吐量?
android可行的数据IO吞吐量是Handlers
多少?足以在线程之间传递原始音频或视频?它应该是可持续的吗?
我没有在androidHandler
文档、$WEB_SEARCH 或 SO 中看到对此的任何引用。
android - 音频android确实强制关闭应用程序
我创建了一个带有歌曲列表视图的音频播放器,当用户单击列表视图中的一个项目时,音乐播放器启动并按下按钮暂停它,这一切都很好!
我的下一站我实现了一个搜索栏来更新歌曲的进度和两个文本视图,一个用于当前歌曲的持续时间,一个用于歌曲的总持续时间。我已经编写了代码,一切似乎都很好,但每次我运行它都会强制关闭
请帮忙!
.Java 类
实用程序类
xml文件1
第二个xml文件:
日志猫:
android - 在 AsyncTask Android 中处理进程
我有两个任务在 doInBackground() 中运行。一项任务是从站点读取数据,另一项任务是从 Url 解析 xml 文件并在 imageview 中设置图像。但是我想将这两个任务分开意味着一旦从站点读取完成,它应该在 textview 中设置文本。之后应该开始 xml 解析。那我该怎么办?
这是我的代码:
我应该如何处理这两个任务?请建议我一些解决方案,以便花费最少的时间。请尽快回复我。提前谢谢。