问题标签 [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.

0 投票
1 回答
1545 浏览

android - Android 处理程序未收到消息

在我的 android 应用程序中,我创建了 2 个处理程序。一个处理程序收到消息并等待(调用 wait();)。此时,如果我将消息发布到第二个处理程序,它没有接收。一段时间后,我收到对话框说应用程序没有响应“强制关闭”或“等待按钮”。

我认为由于一个处理程序中的 wait() ,阻止了第二个处理程序接收消息。

请建议我解决这个问题。

0 投票
2 回答
4674 浏览

android - 为什么要使用 AsyncTaskLoader 和 LoaderManager,而不是简单的 Handler?

从 UI 线程运行异步任务然后修改 UI 是 android 开发中的一个常见问题,所以我决定花一些时间,研究并尝试不同的技术并找到最适合我的技术。

我认为的重要因素:

  • 应该可靠地工作
  • 代码可读性
  • Activity或者Fragment应该尽可能多地保持线程管理的清洁

以下是我对各种方法的印象总结(可能是错误的,有些只是意见):

异步任务

当我第一次进入 Android 时,我使用的是 simple AsyncTaskwithout :LoaderManager

  • 有间歇性问题,我自己编写AsyncTaskManager了活动生命周期来管理它们。
  • 任务数量有一些限制,之前已经报告过内存泄漏。
  • 这些最大的问题是它们使我的代码非常复杂,并且简化代码首先破坏了使用它们的目的。

AsyncTaskLoader 和 LoaderManager

这似乎是推荐的方法,所以我研究了一下:

  • 在阅读了这些之后,似乎推荐这种方法的主要原因是因为它管理具有Fragment生命周期的任务,并且据我了解基本上只是在必要时重新启动任务。在活动重新启动后,似乎无法接收在活动重新启动之前启动的任务的结果。
  • 所有的任务参数似乎都必须是ParcelableSerialiazable进入一个Bundle对象。

处理程序、线程和消息

这是我确定的方法:

  • 易于实施,高度可定制。
  • 您可以访问执行任务的线程:设置优先级、设置用于调试的线程名称、设置守护进程等。
  • 似乎比使用 AsyncTasks 响应更快,基于我多次单击按钮并观察结果和线程闪烁的眼睛测试;)我可以对此进行基准测试。
  • 要处理生命周期问题,可以编写一个管理消息的单例类(在进程处于活动状态时持续存在)。当给定活动的处理程序未设置时存储它们,然后如果它要求其丢失的消息,则将它们转发给活动处理程序。这意味着任务不必使用相同的参数重新启动,这对于非幂等任务至关重要。

所以我得出的结论是,使用Handler,ThreadsMessages是一个更好的解决方案,但我确信我遗漏了一些东西,因为我看到的几乎所有地方都建议使用该AsyncTaskLoader方法。我错过了什么?

感谢您的输入。

0 投票
2 回答
537 浏览

android - 更新 TextView 的文本导致 GC_CONCURRENT 问题

我的问题

我有一个像这样初始化的计时器并调用一个方法来更新一个对象。问题是每次触发计时器时,我都会在 LogCat 中获得 GC_CONCURRENT 输出。

这是我的计时器初始化以及任务。

所以这被调用一次,不再被调用,(除非定时器停止并重新启动)。

我的更新方法看起来是这样。

然后这是我的处理程序,我用它来处理从这个线程获取值到我的 UI 线程。

我不认为这是问题所在。我认为问题出在我实际更新 TextView 的片段中,因为当我将其注释掉时this.durationValueTxtView.setText("TIME");,它不再发生。

我的问题

在我的处理程序创建、计时器创建、计时器任务创建、文本视图参考方面,我是否遗漏了一些东西?任何事物?

提前致谢

0 投票
3 回答
2090 浏览

java - android中的多线程:消息传递

Android Handler是并发消息传递的实现吗?

似乎通过使用HandlerThread,可以很容易地在多个工作线程之间进行通信。但是,据我了解,并发消息传递是基于使用共享内存。我试图了解Handler的实现机制,但对我来说仍然不清楚。

Handler简而言之,Android 是如何工作的?

0 投票
4 回答
8945 浏览

android - 我应该使用 AlarmManager 还是 Handler?

我正在编写一个不断轮询设备传感器的应用程序,并且每隔一段时间应该将一些统计信息写入文件。这可能快到一秒钟一次,也可能慢到一分钟一次。我应该使用Handler's postDelayed()方法还是只安排它AlarmManager

0 投票
1 回答
880 浏览

android - 在从服务调用的线程内使用处理程序

我有一个创建处理程序的线程。从服务调用线程。问题是因为它是从服务调用的,所以我不能使用 Activity.runOnUiThread()。我只能访问上下文而不是活动。

创建处理程序时出现此错误,

这是代码:

代码可能看起来很奇怪,因为我删除了一堆语句。

0 投票
1 回答
91 浏览

android - 带有背景的android警报器

在我的一个应用程序中,我提供了多个警报并且它工作得很好。我想通过一些与互联网相关的后台任务来扩展该警报功能。当为特定给定值设置警报时,应用程序开始每隔 30 秒从我的服务器检查该值。每当返回相同的值时,警报就会响起。我的服务器每 30 秒更新一次新数据。

现在我正在使用广播接收器和不同的待处理意图 ID 设置多个警报。我应该如何开始实施?我对这个警报管理器、服务、接收器、处理程序、异步任务应该使用哪个感到困惑?

任何帮助表示赞赏。谢谢。

0 投票
1 回答
87 浏览

android - 处理数据 IO 吞吐量?

android可行的数据IO吞吐量是Handlers多少?足以在线程之间传递原始音频或视频?它应该是可持续的吗?

我没有在androidHandler文档、$WEB_SEARCH 或 SO 中看到对此的任何引用。

0 投票
1 回答
134 浏览

android - 音频android确实强制关闭应用程序

我创建了一个带有歌曲列表视图的音频播放器,当用户单击列表视图中的一个项目时,音乐播放器启动并按下按钮暂停它,这一切都很好!

我的下一站我实现了一个搜索栏来更新歌曲的进度和两个文本视图,一个用于当前歌曲的持续时间,一个用于歌曲的总持续时间。我已经编写了代码,一切似乎都很好,但每次我运行它都会强制关闭

请帮忙!

.Java 类

实用程序类

xml文件1

第二个xml文件:

日志猫:

0 投票
1 回答
238 浏览

android - 在 AsyncTask Android 中处理进程

我有两个任务在 doInBackground() 中运行。一项任务是从站点读取数据,另一项任务是从 Url 解析 xml 文件并在 imageview 中设置图像。但是我想将这两个任务分开意味着一旦从站点读取完成,它应该在 textview 中设置文本。之后应该开始 xml 解析。那我该怎么办?

这是我的代码:

我应该如何处理这两个任务?请建议我一些解决方案,以便花费最少的时间。请尽快回复我。提前谢谢。