0

我想将数据从活动传递到服务。目前我正在尝试使用ArrayList<HashMap<String, String>>. 我有哪些选项可以将其传递给服务?我正在考虑将其作为额外数据放在意图中,但我不知道该怎么做。或者是否有可能将此设置为某种全球性的?

目前它被设置为活动的静态,并且服务正在回调活动以提供来自 ArrayList 的下一个项目。我对它的工作方式不满意,所以想将列表移到服务中。

编辑

针对以下提出的问题:

我正在尝试将播放列表(是的,另一个媒体应用程序)传递给服务。播放列表ArrayList<HashMap<String, String>>包含配对的歌曲信息,例如“songTitle”、“这是一个标题”。

但是,我认为我对应用程序的生命周期感到困惑。当用户点击播放时,服务被创建。如果我对列表使用静态,则在创建服务时它会看到该列表。因此,该服务将愉快地继续播放此列表中的歌曲。但是,如果用户更改文件夹等,我如何让应用程序识别播放列表中的更改?应用程序的设计方式,用户可以随时取消选中列表中的曲目,也可以浏览到不同的文件夹。当歌曲完成时,应该加载新列表。最好的方法是什么?还是我现在做的方式是最好的方式?当歌曲完成时,将广播发送回请求下一首曲目的主要活动。我应该在此时销毁服务并允许“下一首歌曲”功能重新创建它吗?

生命周期混乱!

4

2 回答 2

1

您是否考虑过将数据存储在数据库中并简单地发送数据已更改的意图?还是使用 ContentProvider 来“自行”发出数据已更改并需要重新加载的信号?这样即使应用程序意外关闭,您也不会使用状态。

于 2012-10-24T07:09:32.687 回答
1

ArrayListHashMapimplement Serializable,因此您应该能够将结构填充到 Intent 中,并使用Intent.getSerializableExtra ()检索它。

从您的活动中,您需要做的就是调用Intent.putExtra(String name, Serializable value)重载。

根据经验,如果可能,请尽量避免在应用程序中使用静态变量。当您的应用程序被操作系统关闭然后重新创建(即从最近的应用程序列表中)时,它们会变得很棘手。

于 2012-10-23T21:42:47.290 回答