我有一个 Activity,它首先需要在 HashMap 的帮助下根据输入确定输出。我在里面存放了 25 双。
问题是 HashMap 每次活动开始时都会初始化。这让我想到了存储这些对的最佳方式——它们应该在“外部资源”中,还是其他一些解决方案——以使对持久化?
将哈希图中的数据放入一些持久存储中可能不会帮助您在创建活动时绕过初始化哈希图。如果您的应用程序经常使用此活动,则可能更值得将 Hashmap 作为字段存储在 Application 类中,然后通过应用程序上下文从任何活动访问。
SampleApplication extends Application{
private HashMap<String,String> mMap = null;
public void onCreate(){
//initialize your hashmap here
...
}
public getHashMap{
return this.mMap;
}
}
要从项目中的任何活动中获取地图,只需使用以下代码:
HashMap<String,String> map = ((SampleApplication)getApplicationContext()).getHashMap();
如果您仍需要持久存储数据,您可以选择此处列出的五种方法之一。HashMap 确实实现了 Serializable,所以如果是我,我可能会使用 SharedPreferences。
如果您使用的字符串永远不会改变,那么编辑Mert 的答案非常好,只需使用字符串资源即可。但是,如果您需要进行大量操作,那么集合的便利性可能仍然使我的回答中的方法值得。
这取决于如何使用您的字符串..
如果全部固定且永久,您可以将它们存储在 String XML 上。
如果您只使用应用程序运行,您可以创建一个类并存储在 ApplicationContext 中。
您可以保留文件/sqlite db 或用户设置。