2016-08-24 159 views
1

对不起,如果此问题已被询问,我找不到关键字。 我目前正在建立一个音乐流应用程序。播放中出现问题。 因此,为了记住下一首要播放的歌曲,我开始了音乐服务,并发送了音乐的阵列列表和当前需要播放的位置。安卓音乐播放器上次播放列表

activity.stopService(new Intent(activity, MusicService.class)); 
activity.startService(new Intent(activity, MusicService.class).putExtra("list", data) 
         .putExtra("position", position)); 

我在整个应用程序中显示一个小空间,显示正在播放音乐。除了当我重新启动我的手机,这意味着服务被破坏,应用程序不记得上次播放列表时,它工作得很好。

我目前正在考虑创建一个本地数据库来记住上次播放列表。但我认为这不是最佳做法。有人能给我一种方法来实现我所需要的吗?谢谢!

编辑: 我最终将arraylist转换为JSON并保存在SharedPreference中。下一次我需要它时,我将它转换回arraylist。

回答

1

我自己创建了一个音乐播放器应用程序的Android,和我做了什么,以节省上次播放歌曲列表如下 -

  1. 创建一个的Hashmap与歌曲ID为关键和位置列表作为价值
  2. 每当播放歌曲时更新此Hashmap。
  3. 最后,将此HashMap保存在设备的内部存储器中。保存的Hashmap在内部存储器

码 -

File Listdirectory = cw.getDir("your direcotry", Context.MODE_PRIVATE); 
    File ListPath = new File(Listdirectory,"file name"); 
    try { 
     FileOutputStream fMap = new FileOutputStream(ListPath); 
     ObjectOutputStream s = new ObjectOutputStream(fMap); 
     s.writeObject(your hashmap); 
     s.close(); 
    } 
    catch (Exception e){ 

    } 
+1

的onDestroy()不能保证被称为“注:不依靠此方法被称为保存数据的地方!” https://developer.android.com/reference/android/app/Activity.html#onDestroy() – csenga

+0

@csenga是的,你是对的,我不知道这一点... ... –