释放内存的好方法

 

释放应用的内存在退出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://*.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);
}

释放内存的好方法

上一篇:立博宣言


下一篇:儿童节快乐 用photoshop和Painter绘制Q版人物插画和动画表情的方法(图文教程)