sus*_*dlh 4 java generics static android memory-leaks
哪个更适合在我的应用中使用?
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
}
Run Code Online (Sandbox Code Playgroud)
对于上面的一个,我每次必须使用它的方法时都要创建堆内存.当它的作用域结束时它的堆内存将被销毁(意味着花括号结束)......
另外.
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
}
Run Code Online (Sandbox Code Playgroud)
对于这个,我不必创建任何堆内存.我读了很多文章,人们都说创建一个静态变量,方法导致应用程序中的内存泄漏.
并请帮我创建getLocalData()以下方法的Genric .....
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();
}
Run Code Online (Sandbox Code Playgroud)
第二种情况不能被打败,因为它是最严格的.
在第一种情况下,只要NetworkCheck对象存在,Context对象就会保持活动状态.还有第二个对象(NetworkCheck).
然而:
关于:
public static <T> void saveLocalData(Context context, String key, T value)
Run Code Online (Sandbox Code Playgroud)
没用,Object会更好.实际上null不会被捕获.通常,此函数具有部分域:并非所有类都可以.再次检索该值将是猜测工作.
使用运行时信息可能会.
public static <T> void saveLocalData(Context context, String key, Class<T> type, T value)
public static <T> T loadLocalData(Context context, String key, Class<T> type)
Run Code Online (Sandbox Code Playgroud)
Java有一个Serializable接口,也可以使用.
public static <T> void saveLocalData(Context context, String key, Serializable value)
Run Code Online (Sandbox Code Playgroud)
然后在存储时收到对象.您需要阅读有关该主题的内容.
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |