java - Android - 如何正确触发 getExtra()?

标签 java android android-intent service

我想将我的对象putExtra()放入 Intent 中,然后将其发送到常驻服务并让它进一步处理该对象。

我已经实现了 Parcelable 等,并且我已经完成了 putExtra() 代码。现在我遇到了一个问题:我不知道如何使用 getExtra() smart-ly

本网站上的大多数示例都是关于 Activity 到 Activity 的通信 - 也就是说,当您将对象或 Parcelable 传递给另一个 Activity 的那一刻,就是您启动目标 Activity 的同一时刻,这意味着您所要做的就是将您的 getExtra() 放入 onCreate 方法中,您就完成了。

但正如我所提到的,我想要一个常驻服务,这意味着该服务可能会在我发送可打包对象之前很久就创建并启动。

当然,我可以实现一个带有延迟计时器的可运行程序,它定期检查传递给它的 Intent ,但这太麻烦了。此外,我根本不相信 android API 没有办法检测 putExtra() 甚至。我的意思是这似乎不太可能。

那么我应该怎么做才能在每次调用 putExtra() 方法时调用数据处理服务中的 getExtra() 呢?我的意思是java是一个OOPL,它是事件驱动的,对吧?一定有什么我可以利用的东西?

最佳答案

听起来您希望您的ActivityService进行通信。这可以使用绑定(bind)服务来解决。 https://developer.android.com/guide/components/bound-services.html

要使其正常工作,您需要重写服务中的 onBind,它会返回 IBinder。如果您的 Activity 和服务都在同一进程中运行,那么这相当简单。 https://developer.android.com/guide/components/bound-services.html#Binder

然后,在您的 Activity 中,您可以通过调用 bindService 获取对 IBinder 的引用,然后您可以直接调用 Service >.

关于java - Android - 如何正确触发 getExtra()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214559/

相关文章:

java - Thread.sleep() 与 java 中的同步

java - 如何使用 .sh 脚本运行具有不同 java 路径的 jar (Openj9)

android - 如何调节我的 Android 应用程序中的帧率?

Android:设置媒体路由按钮时崩溃

android - 当应用是应用商店时从android获取日志

android - 如何知道 Intent ACTION_TIME_CHANGED 是否来自直接用户交互

android - 从以特定方式开始和结束的 Web 链接启动 android 应用 Activity

java - 琐碎的 : Get confirmation of email sent in android

java - 删除帐户、银行程序

java - Kafka Streams 本地状态存储