【问题标题】:Activity, Service and what kind of communication between?Activity、Service之间有什么样的通信方式?
【发布时间】:2023-04-10 15:54:01
【问题描述】:

我正在尝试开发一个由 Activity 和 Service 组成的 Android 应用程序。 Activity 在 Service 上启动一个无限期的进程,该进程将从 Activity 中关闭。不使用 then 子类 IntentService,而是直接使用 Service。由 onStartCommand 和 OnDestroy 控制。

我显然需要从 Activity 向 Service 传递信息:Service 的状态和一些字符串。

我尝试使用 LocalBrodcastManager,但是当转动设备或活动进入 onPause 状态时,消息会丢失。我试图遵循几个例子,但收效甚微。特别是由于缺少一些信息,我无法完成它,这些信息显然被认为是显而易见的,但对我来说并不明显:https://developer.android.com/training/run-background-service/report-status.html

然后我尝试通过 IBinder (Example: Communication between Activity and Service using Messaging) 使用 Messenger,但程序似乎有点复杂,我无法满足我的需求。

我需要从我的 Activity 启动服务(可能会自动绑定?,如果使用 Messenger),Service 应该发出 Activity 处于活动状态的信号,然后 Service 通过 GPS LocationListener 记录一些点,将其写入一个文件,并且应该再次指出 Activity、正在记录的数据、文件大小等。

您建议使用什么来传递此信息,您能否提供一些示例?

【问题讨论】:

  • 您可以配置您的应用程序,以便显示方向更改不会终止并重新启动 Activity。这可能是解决您的问题的最简单方法。
  • 有趣,但我必须使用什么?我在想这是不可能的,为此必须使用 savedInstanceState...
  • 只需在清单中声明您的Activity 将自行处理方向更改。覆盖onConfigurationChanged(),当它被调用时,您可以重置内容视图和/或更改您的布局。
  • 啊是的!,我明白了... android:configChanges="orientation|screenSize" 谢谢,去试试。 :-)

标签: android android-activity android-service messenger localbroadcastmanager


【解决方案1】:

我实际上正在编写一个教程,解释和比较 Android 中许多不同的 IPC 方法,但由于它还没有准备好,而且你需要一个简单的修复,我会推荐 https://github.com/greenrobot/EventBus

还可以随意查看我和我的朋友们在这里制作的一个旧但仍然相关的示例:https://github.com/RanNachmany/AndconLab

祝你好运。

【讨论】:

  • 非常感谢。你的代码很清晰,写得很好,但对于我的实际能力来说太先进了。目前我只意识到整个过程的一半。我只能从我的 Activity 绑定到服务,启动 ServiceConnection 并将消息发送到服务中。我想现在我也必须在客户端中实现一个 Messenger。但目前我必须研究 Handler 是如何工作的。 :-)
  • 我会,但我不知道怎么做。它是如何完成的? (我有点惭愧……)
  • @Paolovip 别这样没关系 :) 如果这么简单就不会有这个链接:stackoverflow.com/help/someone-answers
猜你喜欢
  • 2012-05-17
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多