【发布时间】:2016-09-19 07:55:27
【问题描述】:
哪些更适合在我的应用中使用?
public class NetworkCheck {
Context context;
public NetworkCheck(Context context) {
this.context=context;
}
public boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null;
}
}
...
if(new NetworkCheck(this).isNetworkConnected()){
//statement
}
对于上述方法,每当我必须使用它的方法时,我都必须创建堆内存。它的堆内存将在其作用域结束时被销毁(意味着花括号结束)......
或者。
public class NetworkCheck {
public static boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null;
}
}
...
if(NetworkCheck.isNetworkConnected(){
//statement
}
为此,我不必创建任何堆内存。我读过很多文章,人们说创建静态变量和方法会导致应用程序内存泄漏。
请帮我创建下面方法的这个 Genric getLocalData() .....
public static <T> void saveLocalData(Context context, String key, T value) {
SharedPreferences prefs = context.getSharedPreferences(
"Qikqrup", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
if (value instanceof String)
editor.putString(key, (String) value);
else if (value instanceof Boolean)
editor.putBoolean(key, (Boolean) value);
else if (value instanceof Integer)
editor.putInt(key, (Integer) value);
editor.commit();
}
【问题讨论】:
-
仅使用上面的代码,我看不到任何可能的内存泄漏。您可以同时使用两者。检查此blog.nimbledroid.com/2016/05/23/memory-leaks.html 以更好地了解内存泄漏。
-
已经阅读了很多关于这方面的文章,你就是其中之一....thanx 的回复。
-
“我读过很多文章,人们说创建 STATIC 变量和方法会导致应用程序中的 MEMORY LEAK。”那不是真的。重新阅读文章。就像@Alan K. 所说,第二种方式更快。 15 - 20 % 根据文档
-
请注意,
T变量中没有任何意义。只需将参数类型设为Object。
标签: java android generics memory-leaks static