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