服务将字符串发送到另一个 activity 而不打开它

service sending string to another activity without opening it

我有一项在后台运行的服务 - SERVICE A。 当我打开 activity - ACTIVITY A 时,我希望此服务更改此 [ 的 editText 字段上显示的文本=22=]一个。 我想也许如果我得到打开的 activity 的上下文,那么我将能够使用和处理它的视图。可能吗?

还有一个相关的问题: 如果我没有字段名称,我可以使用一些循环到 运行 并搜索 activity 中的所有视图并获取其属性吗?

似乎不​​太直接的方法比得到这个更好,而不是让 activity 由服务直接更新。事实上,一般来说,Service/Activity 通信最好通过以下方式之一处理:

  1. MessageHandlers- 基本上,一个人可以向另一个人发送消息,而另一个人又设置文本的操作。
  2. BroadcastReceivers(LocalBroadcastReceiver 也可以)- 一部分向任何正在收听的人发送广播消息,另一部分为该消息设置一个侦听器。传递了一个 Intent,其中可以包含消息。

我建议你使用第二种。应用程序在打开时向服务发送广播,服务 returns 发送广播以将请求的数据传递给 Activity。

另请参阅 Android SDK 中的 Service docs

1 将字符串保存在服务的首选项中(参见:)

2 在创建 activity 时检索字符串并将其设置为 edittext

在你的问题中你说你想在打开 activity 时显示字符串,所以上面的 2 个步骤就可以完成工作。

为了获得更好的性能,您可以在 onresume() 中重复第二步;