[英]send data from the UI thread to another thread which is not created in by the Main Activity “Android”
我检查了几个网站,但没有找到这个问题的答案。
我有一个UI线程,该线程以特定频率调用带有alarmManager的服务。 并且该服务本身调用另一个IntentService,后者启动服务器/客户端线程。 我想知道是否可以使服务器/客户端线程与UI线程通信?
非常感谢你的帮助。
IntentService.onCreate()
方法始终在UI线程上执行。 您可以在该方法内创建一个新的Handler
实例,并将其存储在IntentService
实现的实例或类数据成员中。 您可以使用此Handler
程序post(Runnable)
在UI线程上执行的sendMessage(Message)
,也可以使用sendMessage(Message)
进行发布,该handleMessage(Message)
将由handleMessage(Message)
实现在UI线程上进行处理。 为了简单起见,我建议坚持使用post(Runnable)
。
根据您的评论进行更新:
假设您的后台线程自己进行连续处理并且没有ArrayList<MyLocation>
,最简单的方法是创建一个队列(例如ArrayList<MyLocation>
可以工作),然后从UI将每个新位置添加到它的尾部线。 同时,后台线程从头部拾取下一个位置并按预期进行处理。 这是在两个线程之间进行通信的一种非常简单的异步方式(本质上是Looper
和Message
工作方式的简化版本)。
但是,此方法的主要缺点是您的后台线程始终很忙,因此如果没有传入的位置更新,则会占用CPU资源。 更好的选择是将您的后台线程更改为Looper线程并向其发送消息。 这是一个如何创建Looper线程并向其发送消息的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.