释放内存的好方法

 

释放应用的内存在退出activity的时候调用

private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}

调用方法

unbindDrawables(findViewById(R.id.root_view));
System.gc();

其中R.id.root_view为跟布局layout的id

http://stackoverflow.com/questions/1147172/what-android-tools-and-methods-work-best-to-find-memory-resource-leaks

 

//重启应用方法

Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

 

//使用bitmap时的最优方法

//图片加载时优化参数配置
public static Bitmap createBitmapbyDecodeStrream(Context context,int resId){
//图片加载优化
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable = true;// 允许可清除
options.inInputShareable = true;// 以上options的两个属性必须联合使用才会有效果

return BitmapFactory.decodeStream(context.getResources().openRawResource(resId),null,options);
}

public static Bitmap createBitmapbyDecodeStrreamByTypeArray(Context context,int resId,TypedArray typedArray){
//图片加载优化
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable = true;// 允许可清除
options.inInputShareable = true;// 以上options的两个属性必须联合使用才会有效果

return BitmapFactory.decodeStream((context.getResources().openRawResource(typedArray.getResourceId(resId,0))),null,options);
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。