2016-08-24 102 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是的,你是對的,我不知道這一點... ... –