當我最初撰寫出版了我的應用程序,我使用的是自定義編寫的活動來處理應用程序設置。我使用的自定義文件名存儲共享preferfences,像這樣:遷移從getSharedPreferences(自定義文件)getDefaultSharedPreferences()
getSharedPreferences("custom_settings_file",MODE_PRIVATE);
但現在我重構我的應用程序,我想實現PreferenceActivity
或PreferenceFragment與PreferenceScreen
部分的XML文件。每次我見過的教程或例子是使用
getDefaultSharedPreferences(context);
檢索共享偏好,因爲PreferenceActivity假設默認文件名存儲的偏好,有沒有辦法告訴它使用一個不同的(至少我做不到找一個小時後搜索並閱讀文檔)。
所以現在我有一個問題。如果我只是簡單地使用新的默認文件,我的應用程序的現有用戶在更新應用程序時將失去它們的設置,因爲新應用程序不會知道任何關於「custom_settings_file」的信息。在應用更新中將數據從舊文件移動到新文件的最佳方式是什麼?
這裏是我能想出可能的選項:
- 擴展
Application
類和實施的onCreate()的一段代碼讓每一個我的應用程序啓動時,它會檢查是否存在「custom_settings_file」並將其內容移至新的內容。但是,在每次啓動應用程序時運行代碼塊似乎都浪費了太多處理資源,只能運行一次。 - 只需通知用戶其舊設置已消失。但顯然這是不可接受的。
是否有更好的解決方案,比選1?也許有人已經面臨類似的問題?
這是一個優雅的解決方案!謝謝。 – 2013-03-18 01:06:43