我想将数据从活动传递到服务。目前我正在尝试使用ArrayList<HashMap<String, String>>
。将此传递给服务有哪些选择?我正在考虑将它作为意图中的额外数据,但我不知道如何做到这一点。或者是否可以将此设置为某种全局?
此时它被设置为活动的静态,并且服务正在回调活动以提供ArrayList中的下一个项目。我不满意这是如何工作的,所以想把列表移到服务中。
修改
回答以下提出的问题:
我正在尝试将一个播放列表(是的,另一个媒体应用程序)传递给该服务。播放列表ArrayList<HashMap<String, String>>
与成对的歌曲信息相对应,例如“songTitle”,“这是一个标题”。
生命周期混乱!
答案 0 :(得分:1)
ArrayList
和HashMap
都会实现Serializable
,因此您应该只能在Intent中填充结构,并使用Intent.getSerializableExtra()检索它。
在您的活动中,您需要做的就是调用Intent.putExtra(String name, Serializable value)重载。
根据经验,尽可能避免在应用程序中挂起静态变量。当您的应用程序被操作系统关闭然后重新创建(即从最近的应用程序列表中)时,它们会变得棘手。
答案 1 :(得分:1)
您是否考虑过将数据存储在数据库中并简单地发送数据已更改的意图?或者使用ContentProvider“自己”发出数据已经改变并需要重新加载的信号?这样,即使应用程序无意中关闭,您也不会使用状态。