service将字符串发送到另一个活动而不打开它

时间:2015-08-30 19:42:08

标签: android android-activity view android-service

我有一个在后台工作的服务 - SERVICE A 。 当我打开一个活动 - ACTIVITY A 时,我希望此服务更改 ACTIVITY A 的editText字段上显示的文本。 我想如果我获得已打开活动的上下文,那么我将能够使用并处理其视图。有可能吗?

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

2 个答案:

答案 0 :(得分:1)

似乎不太直接的方法来获得这个,而不是让服务直接更新活动。事实上,一般来说,服务/活动通信最好采用以下方式之一进行处理:

  1. MessageHandlers-基本上,可以向另一方发送消息,而另一方则设置文本的动作。
  2. BroadcastReceivers(LocalBroadcastReceiver也没关系) - 一部分向任何正在收听的人发送广播消息,另一部分为该消息设置一个监听器。传递一个Intent,它可以包含消息。
  3. 我建议您使用第二个。应用程序在打开时向服务发送广播,服务返回广播以将请求的数据传递给活动。

    另请参阅Android SDK中的Service docs

答案 1 :(得分:0)

1将字符串保存在服务的首选项中(请参阅:https://stackoverflow.com/a/12074248/4647577

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

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

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