我正在开发一个使用 Google Places API 的 Android 应用程序。
为了将 Google API Key 排除在应用程序代码之外,我从我自己的经过身份验证的 API 服务器中获取它,并且在应用程序周围的许多地方都需要它。
将其存储/缓存到内存的最佳方式是什么?
我知道仅使用单例将被垃圾收集。扩展Application
类并向那里添加方法是一个好方法吗?还有什么我可以考虑的吗?
我正在开发一个使用 Google Places API 的 Android 应用程序。
为了将 Google API Key 排除在应用程序代码之外,我从我自己的经过身份验证的 API 服务器中获取它,并且在应用程序周围的许多地方都需要它。
将其存储/缓存到内存的最佳方式是什么?
我知道仅使用单例将被垃圾收集。扩展Application
类并向那里添加方法是一个好方法吗?还有什么我可以考虑的吗?
要保存到首选项:
PreferenceManager.getDefaultSharedPreferences(context).edit().putString("MYAPIKEY",
"myStringToSave").commit();
要获取存储的首选项:
PreferenceManager.getDefaultSharedPreferences(context).getString("MYAPIKEY",
"defaultStringIfNothingFound");
上下文是您的上下文。
从服务器获取后,保存。然后,您可以随时访问它。卸载应用程序当然会删除其内容。否则它是持久的。
虚拟机不能垃圾收集类仍然可以访问的字符串引用,所以我不明白为什么不能将字符串保存在单例中并将其存储为静态引用。您也可以将其存储在 Doomsknight 建议的共享首选项中,但这不会缓存在内存中。共享首选项以 XML 文件的形式存储在持久性存储中(相对于 RAM 上可用的值)。从它们中检索值。
也许您需要将两者结合起来。将值存储在共享首选项中,然后在您的应用启动时将其缓存在内存中。我不知道 PreferenceManager 本身是否在内存中具有某种缓存机制。