۱۳۹۴/۰۹/۰۹, ۰۳:۴۷ ب.ظ
سلام.
بنده یک نگاه کلی به کدهای کلاس انداختم، آن محدودیتی که برای حافظه (memory) تعیین شده است، مربوط به حافظه RAM است (نه حافظه Disk)، یعنی دو کلاس با نام های MemoryCache و FileCache داریم که کلاس MemoryCache مرتبط با حافظه RAM است (لغت memory را برای آن به کار برده) و کلاس FileCache مرتبط با ذخیره فایل ها در حافظه Disk می باشد.
در کلاس FileCache (که در آن آدرس پوشه ذخیره فایل ها را هم تعیین می کنیم)، روش clear برای پاکسازی پوشه در نظر گرفته شده :
و در کلاس MemoryCache نیز روشی با نام clear برای پاکسازی حافظه RAM در نظر گرفته شده :
و در کل، در کلاس ImageLoader (که کلاس اصلی مورد استفاده ما است)، روش clearCache برای پاکسازی همزمان RAM و Disk در نظر گرفته شده که در واقع همان دو روش را اجرا خواهد کرد :
بنابراین بر اساس نیاز خود، می توانید از این روش ها استفاده کنید. یعن اجازه بدهید ابتدا عکس ها cache شوند، سپس آنها را پاک کنید (در واقع کدهای کلاس ها را دستکاری نمی کنید تا در دو حالت دلخواه ذخیره به صورت cache و یا عدم ذخیره، قابل استفاده باشند).
بنده یک نگاه کلی به کدهای کلاس انداختم، آن محدودیتی که برای حافظه (memory) تعیین شده است، مربوط به حافظه RAM است (نه حافظه Disk)، یعنی دو کلاس با نام های MemoryCache و FileCache داریم که کلاس MemoryCache مرتبط با حافظه RAM است (لغت memory را برای آن به کار برده) و کلاس FileCache مرتبط با ذخیره فایل ها در حافظه Disk می باشد.
در کلاس FileCache (که در آن آدرس پوشه ذخیره فایل ها را هم تعیین می کنیم)، روش clear برای پاکسازی پوشه در نظر گرفته شده :
کد:
public void clear(){
File[] files=cacheDir.listFiles();
if(files==null)
return;
for(File f:files)
f.delete();
}
و در کلاس MemoryCache نیز روشی با نام clear برای پاکسازی حافظه RAM در نظر گرفته شده :
کد:
public void clear() {
try{
//NullPointerException sometimes happen here http://code.google.com/p/osmdroid/issues/detail?id=78
cache.clear();
size=0;
}catch(NullPointerException ex){
ex.printStackTrace();
}
}
و در کل، در کلاس ImageLoader (که کلاس اصلی مورد استفاده ما است)، روش clearCache برای پاکسازی همزمان RAM و Disk در نظر گرفته شده که در واقع همان دو روش را اجرا خواهد کرد :
کد:
public void clearCache() {
memoryCache.clear();
fileCache.clear();
}
بنابراین بر اساس نیاز خود، می توانید از این روش ها استفاده کنید. یعن اجازه بدهید ابتدا عکس ها cache شوند، سپس آنها را پاک کنید (در واقع کدهای کلاس ها را دستکاری نمی کنید تا در دو حالت دلخواه ذخیره به صورت cache و یا عدم ذخیره، قابل استفاده باشند).
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.