پس گرفتن حافظه پس از استفاده منابع؟!
سلام دوستان
توی برنامه به کاربر این انتخابو دادم که بک گروند صفحه اصلی رو تغییر بده، برای این کار به اکتیویتی 2 هدایت میشه، اونجا تصاویرو میبینه، همین که تصویرو میبینه حجم برنامه بالا میره و پس از خارج شدن از اکتیویتی 2 حافظه اشغالی تغییری نمیکنه!
؟!
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
در حالت کلی سیستم اکتیویتیهای باز شده رو تو حافظه نگه میداره و اگه نیاز شد اونا رو از حافظه خارج میکنه. در کل میگن که این کارار رو بسپارید به سیستم و شما غمتون نباشه.
ولی اگه میخوایید اکتیویتی رو ببندید میتونید تو متد onPuase اکتیویتی دوم متد ()finish رو فراخوانی کنید تا اکتیویتی بسته بشه.
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
نقل قول:
نوشته شده توسط
jalil_gh
در حالت کلی سیستم اکتیویتیهای باز شده رو تو حافظه نگه میداره و اگه نیاز شد اونا رو از حافظه خارج میکنه. در کل میگن که این کارار رو بسپارید به سیستم و شما غمتون نباشه.
ولی اگه میخوایید اکتیویتی رو ببندید میتونید تو متد onPuase اکتیویتی دوم متد ()finish رو فراخوانی کنید تا اکتیویتی بسته بشه.
سلام
در مورد مبحث اول شما دوست خوبم، باید به خاطر داشت که گاهی باید تصاویر رو مدیریت کرد. که برای این کار مقاله های مختلفی از سوی توسعه دهندگان ارائه شده که زحمتش به دوش خودتون :
http://developer.android.com/trainin...aps/index.html
در مورد مبحث دوم شما دوست خوبم، این کار زیاد کاربر پسند نبوده و از لحاظ برنامه نویسی هم منظقی نیست.
---------
در مورد اینکه فضا آزاد نمیشه، GC گاهی وقت ها کند عمل می کنه برای اینکه سریع تر این عمل رو انجام بدین در تابع onDestroy ، شما می توانید ImageViewهای خودتون رو null کنید :
your_imageview.setImageDrawable(null);
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
نقل قول:
در حالت کلی سیستم اکتیویتیهای باز شده رو تو حافظه نگه میداره و اگه نیاز شد اونا رو از حافظه خارج میکنه. در کل میگن که این کارار رو بسپارید به سیستم و شما غمتون نباشه.
برنامم 16 مگه، داخل صفحه دوم تا 60مگ میره!! غمم هست
نقل قول:
ولی اگه میخوایید اکتیویتی رو ببندید میتونید تو متد onPuase اکتیویتی دوم متد ()finish رو فراخوانی کنید تا اکتیویتی بسته بشه.
فینیش زدم فضارو پس نمیده..
رزولوشن تصاویر اینقد بالا نیست که بیخود کاری بشه، ولی تعداد یخورده بالاس البته فقط میخوام نشونشون بدم و در نهایت از یه عکس استفاده کنم ولی همشونو تو حافظه نگه میداره
نقل قول:
در مورد اینکه فضا آزاد نمیشه، GC گاهی وقت ها کند عمل می کنه برای اینکه سریع تر این عمل رو انجام بدین در تابع onDestroy ، شما می توانید ImageViewهای خودتون رو null کنید :
1 |
your_imageview.setImageDrawable(null); |
gc رو هم فراخوانی میکنم ولی حجم همونه!!!!
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
از روی گوشی، حافظه استفاده شده رو سنجش نکنید. از ابزارهای موجود استفاده کنید. گاهی در گوشی این مقادیر اشتباه هستن. گاهی هم روی مقادیر Freeze میشن.
اگر بازهم ابزارها همان مقدار رو نشون داد، اگر امکانش هست یک نمونه پروژه در همین پست تهیه کنید تا تست کنیم.
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
نقل قول:
نوشته شده توسط
cccccccccc
سلام دوستان
توی برنامه به کاربر این انتخابو دادم که بک گروند صفحه اصلی رو تغییر بده، برای این کار به اکتیویتی 2 هدایت میشه، اونجا تصاویرو میبینه، همین که تصویرو میبینه حجم برنامه بالا میره و پس از خارج شدن از اکتیویتی 2 حافظه اشغالی تغییری نمیکنه!
؟!
میشه کدی که زدی رو قرار بدی ؟
درحالت کلی برای اینجور کارا بیت مپ ها رو از طریق LruCache کش میکنن همچنین strong refrences هم هست در ضمن میتونید کش لوکال درست کنید و موقع عوض شدن اکتیویتی ها از کش پاک میشن
نقل قول: پس گرفتن حافظه پس از استفاده منابع؟!
r.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent me)
{
if (me.getAction() == MotionEvent.ACTION_DOWN)
{
x=(int) me.getRawX();
}
else if(me.getAction()==MotionEvent.ACTION_UP)
{
if(me.getRawX()>x+20)
{
Main.backidtemp++;
if(Main.backidtemp==12)
Main.backidtemp=1;
layoutbackset();
}
else if(me.getRawX()+20<x)
{
Main.backidtemp--;
if(Main.backidtemp==0)
Main.backidtemp=11;
layoutbackset();
}
}
return true;
}
});
void layoutbackset()
{
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN)
r.setBackgroundDrawable(getResources().getDrawable (getResources().
getIdentifier("drawable/back"+Main.backidtemp, "drawable", getPackageName())));
else
r.setBackground(getResources().getDrawable(getReso urces().
getIdentifier("drawable/back"+Main.backidtemp, "drawable", getPackageName())));
}
btnok.setOnClickListener(new OnClickListener() {
public void onClick(View arg0)
{
setResult(RESULT_OK);
finish();
}
});
دکمه کنسل و بک هم مثله ok