انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اندروید: کلید 2777 (قرار دادن عکس از اینترنت بدون cache کردن)

اندروید: کلید 2777 (قرار دادن عکس از اینترنت بدون cache کردن)

#1
با سلام :
با استفاده ازکلید 2777 توانستم چند عکس که مسیر آنها را با جیسون می گرفتم در گریدویو قرار دهم .
می خوام برخلاف این آموزش عکس ها cache نشود !
چون عکسهای من متفاوت می باشد و هر بار جیسون و مسیری که دریافت می نمایم متفاوت می باشد بنابراین کش کردن عکس ها به صرفه نیست.
توی قطعه کدی که از کلاس memory cache گذاشتم زیاد دستکاری کردم که حداقل فضا برای کش کردن رو کم کنم اما نشد .

آیا می شود از این کلاس استفاده کرد بدون اینکه عکس ها رو کش کند . چون چند جا اومده بررسی کرده که اگر فایل نبود چه کارهایی رو انجام بده من نتونستم
و آیا می شود حداقل فضایی رو که تخصیص می دهد برای کش کردن کم کرد مثلا 5 مگابایت تا هر زمان پر شد یا دیگه کش نکند یا فایلهای قبلی رو پاک کند.


اونجا که کامنت کرده use 25% memory اونجا رو هم تغییر دادم .

یه نکته جالب اینکه اومدم  حافظه گوشی خودم رو تقریبا پر پر کردم بعد برنامه رو اجرا کردم . جالب بود رفتم توی مسیر کش دیدم بازم عکس کش کرده و available memory دستکاه رو که تقریبا صفر بود اومده بود نزدیک 11 مگابایت کرده بود آیا چیزی رو از حافظه من پاک کرده ؟
باتشکر از دوستان

کد پی‌اچ‌پی:
public class MemoryCache 

    private 
static final String TAG "MemoryCache";
 
   private Map<StringBitmapcache=Collections.synchronizedMap(
 
           new LinkedHashMap<StringBitmap>(10,1.5f,true));//Last argument true for LRU ordering
 
   private long size=0;//current allocated size
 
   private long limit=1000000;//max memory in bytes

 
   public MemoryCache(){
 
       //use 25% of available heap size
 
       setLimit(Runtime.getRuntime().maxMemory()/4);
 
   }
 
  
    public void setLimit
(long new_limit){
 
       limit=new_limit;
 
       Log.i(TAG"MemoryCache will use up to "+limit/1024./1024.+"MB");
 
   

برای لود عکس ها از اینترنت از قطعه کد زیر استفاده کردم :

کد پی‌اچ‌پی:
public View getView(final int positionView convertViewViewGroup parent) {
 
            View row convertView
 
            final ViewHolder holder;
 
           if (row == null) {
 
                
                 holder 
= new ViewHolder();
 
                LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
                row inflater.inflate(R.layout.showitemsparentfalse);
 
       
                 holder
.image=(ImageView)row.findViewById(R.id.imagess);
 
                holder.image.getLayoutParams().height=x;
 
                holder.image.getLayoutParams().width=x;
 
           
                 row
.setTag(holder);
 
            }
 
           
             
else {
                
 
                holder = (ViewHolderrow.getTag();
            
 
            }
            

 
               new AsyncTask<StringVoidBitmap>() {

             
     protected Bitmap doInBackground(String... args) {
             
        try {
             
             
                         bitmap 
BitmapFactory.decodeStream((InputStream)new URL(data[position]).getContent());
             
    
                    
}
             
        
                     
catch (Exception e) {
             
             e.printStackTrace();
             
       }
             
     return bitmap;
             
      }

                @
Override
                
protected void onPostExecute(Bitmap result) {
                    
super.onPostExecute(result);
            
                    
holder.image.setImageBitmap(result);
                }

            }

            .
execute();
 
  
            return row
;
 
       

اما زمانی که اسکرول انجام می شود عکس ها دوباره لود می شوند آیا حتما نیاز به کش کردن هست برای اینکه بعد از اسکرول شدن دوباره لود نشود.
پاسخ


پیام‌های این موضوع
اندروید: کلید 2777 (قرار دادن عکس از اینترنت بدون cache کردن) - توسط saeed - ۱۳۹۴/۰۹/۰۸, ۰۶:۰۷ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان