Android 应用程序具有两种在活动之间传递数据的解决方案(请不要意图额外!)
public class A {
public static LinkedHashMap<String,String> hashStore = new LinkedHasMap<String,String>();
public void doHttp(){
//Some HTTP call and store some json value
hashStore.put("data","jsonKeyValue");
}
public void onDestroy(){
hashStore.remove(key);// remove data key
hashStore.clear();
}
}
public class B {
public void getHttp(){
//Some HTTP call
String extra = A.hashStore.get("data");
}}
// SharedPreference Call
public class A{
SharedPreference hashPref ; //declaration on onCreate
public void dohttp(){
//Some Http and Store value in SharedPreferences
hashPref.put("data","jsonkeyvalue");
hashPref.apply();
}}
public class B{
SharedPreference hashPref ; //declaration on onCreate
public void getHttp(){
//Some HTTP call
String extra = hashPref.get("data");
}}
- 哪一种是减少内存泄漏的更好选择?
- 如果我存储超过 30-40 个密钥,哪一个更可取?
- 如果我使用共享首选项,我在验证和更新密钥时不会消耗性能吗?
- 除了这两种解决方案之外,我还可以使用其他替代方案吗? (不要在这里提及 Intent Extras。)
根据许多原则,将您的活动用作静态数据源,并让其他活动依赖于它(甚至知道该活动存在)是一种不好的做法(高内聚、解耦、最小化依赖、受保护的变化…… http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29),但是 Android 团队有一些类似的方法可供您信赖,但出于同样的原因,它们不应该是首选。
我更喜欢的是:
如果数据必须持久化:
- 适用于少量数据的 SharedPreferences
- 适用于更大数据量的 SQLite 数据库
如果你不需要保存数据
- 始终运行的服务,您绑定到所有活动,其中您拥有所有通用数据和功能。
- 拥有数据的辅助对象。
您可以在这个 android 官方中找到更多信息faq page http://developer.android.com/guide/faq/framework.html#3或者在这个伟大的所以答案 https://stackoverflow.com/a/4878259/2357411,这是基于该常见问题解答,但有一些代码示例
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)