Android 如何使用IntentService加载资源,以便以后可以将其用于某些活动

Android 如何使用IntentService加载资源,以便以后可以将其用于某些活动,android,android-intent,android-activity,android-service,intentservice,Android,Android Intent,Android Activity,Android Service,Intentservice,第一次在这里发布问题:) 我正在开发一个Android应用程序,它需要一个URL中的资源,并使用IntentService加载它 此应用程序有3个活动: 活动W:欢迎活动,有一些设置,可以打开A或B 活动A:是否对URL中的资源进行了一些处理 活动B:是否对URL中的资源执行某些操作 活动W自动启动IntentService,以便开始在后台加载资源以节省时间。这样,当用户到达需要资源的活动A或B时,工作已经完成或几乎完成 问题:当IntentService成功加载资源时,它不知道显示了哪个活

第一次在这里发布问题:)

我正在开发一个Android应用程序,它需要一个URL中的资源,并使用IntentService加载它

此应用程序有3个活动:

  • 活动W:欢迎活动,有一些设置,可以打开A或B

  • 活动A:是否对URL中的资源进行了一些处理

  • 活动B:是否对URL中的资源执行某些操作

活动W自动启动IntentService,以便开始在后台加载资源以节省时间。这样,当用户到达需要资源的活动AB时,工作已经完成或几乎完成

问题:当IntentService成功加载资源时,它不知道显示了哪个活动。可能用户仍在活动W,或者可能在AB

问题:如何轻松地将资源(它是一个数组列表)从IntentService传递到活动AB,以显示的为准?如果用户仍在W上,将资源放在何处,以便AB稍后检索资源


谢谢。

最好的解决方案是使用广播接收器。如果您的IntentService完成了工作,它将广播结果。您的活动必须实现接收器,才能获得广播。请记住在您的活动中相应地注册和注销接收者


这里有一个很好的使用方法。

您也可以使用它。

请注意,为了在活动中获取加载的资源,您需要有目的地传递它们,即它们必须是可打包的。或者,您可以通过Uri在活动中存储并稍后检索它们。@Steve感谢您的回答,但我在想,如果IntentService在用户在活动之间更改时执行广播会怎么样?可能有一段时间没有接收者在收听广播。那么会发生什么?有更好的解决方案吗?@type-a1pha谢谢你的评论,但我不明白你存储资源(ArrayList)并通过URI检索它是什么意思。您将在何处/如何存储它以供其他活动使用?您能提供一个简单的例子吗?IntentServices(以及通用服务中的更多)和BroadcastReceivers实现了一种使用消息进行通信的IPC形式。您不能在消息中存储引用,因为引用不能跨不同进程跳转。因此,如果您想要传递一个对象,您需要将其转换为消息可以传递的形式(即可包裹),或者,例如,如果您需要传递从web下载的数据,您可以首先将该数据存储在磁盘上的文件中,然后通过文件系统中的文件路径(即uri)检索该数据。