Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓ArrayList<;HashMap<;字符串,字符串>&燃气轮机;_Android_Android Intent_Arraylist_Hashmap_Parcelable - Fatal编程技术网

Android 安卓ArrayList<;HashMap<;字符串,字符串>&燃气轮机;

Android 安卓ArrayList<;HashMap<;字符串,字符串>&燃气轮机;,android,android-intent,arraylist,hashmap,parcelable,Android,Android Intent,Arraylist,Hashmap,Parcelable,我想将数据从活动传递到服务。目前我正在尝试使用ArrayList。我有哪些选项可以将其传递给服务?我想把它作为额外的数据放在intent中,但我不知道怎么做。或者有没有可能将其设置为某种全球性的 此时,它被设置为活动的静态项,并且服务正在回调要提供ArrayList中的下一项的活动。我对它的工作方式不满意,因此希望将列表移动到服务中 编辑 针对以下问题: 我正在尝试将播放列表(yep,另一个媒体应用程序)传递给该服务。播放列表ArrayListcontains成对的歌曲信息,如“songTitl

我想将数据从活动传递到服务。目前我正在尝试使用
ArrayList
。我有哪些选项可以将其传递给服务?我想把它作为额外的数据放在intent中,但我不知道怎么做。或者有没有可能将其设置为某种全球性的

此时,它被设置为活动的静态项,并且服务正在回调要提供ArrayList中的下一项的活动。我对它的工作方式不满意,因此希望将列表移动到服务中

编辑

针对以下问题:

我正在尝试将播放列表(yep,另一个媒体应用程序)传递给该服务。播放列表
ArrayList
contains成对的歌曲信息,如“songTitle”、“this is a title”

然而,我认为我对应用程序的生命周期感到困惑。当用户单击“播放”时,将创建服务。如果我在列表中使用了static,那么在创建服务时,它会看到该列表。因此,该服务将乐于继续播放此列表中的歌曲。但是,如果用户更改了文件夹等,我如何让应用程序识别播放列表中的更改?按照应用程序的设计方式,用户可以随时取消列表中的曲目锁定,也可以浏览到其他文件夹。歌曲完成后,应加载新列表。最好的方法是什么?还是我现在这样做是最好的方式?歌曲完成后,将广播发送回主活动,请求播放下一首曲目。我是否应该在此时销毁该服务并允许“下一首歌”功能重新创建它


生命周期混乱

ArrayList和
HashMap
都实现了
Serializable
,因此您应该能够将您的结构填充到意图中,并使用

从您的活动中,您所需要做的就是调用重载


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

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

您试图向服务传递什么样的数据?hashmaps数组?如果你实现了一个可分配的对象,你可以把它作为一个额外的对象放在intent-correct?你不能这样做吗?假设你在服务到达arraylist时编辑好了它,你是否尝试导入静态变量而不是简单地调用它?是的,我同意,我希望尽可能避免静态,这就是为什么我希望有更好的数据传递方式。为了传递可序列化的数据,我需要一个自定义类来编写它,还是可以在适当的时候抛出
ArrayList
。您所需要做的就是将
ArrayList
传递给
intent.putExtra()
。我没有考虑过这一点,但这不是我以前做过的事情。麻烦你把我的一生都告诉我好吗?我在想:创建播放列表,保存到数据库。单击播放,启动服务。服务检查数据库内容,播放曲目1。在下一个/完成播放曲目2。如果用户更改播放列表,服务如何知道?“活动”如何知道歌曲2已启动?您可能会出于某种目的触发服务,其中包含例如enum NEW_播放列表、START、PAUSE等内容。。。该服务可以通过(本地)广播发出歌曲完成的信号,然后在活动中进行处理。我还得自己详细地试一下。