2017-04-05 104 views
-1

如何解決「java.lang.OutOfMemoryError:未能分配一個996567422字節分配與7088560自由字節和117MB直到OOM「在android中。如何解決「java.lang.OutOfMemoryError:無法分配一個996567422字節分配與7088560空閒字節和117MB,直到OOM」在android

由於大的圖像尺寸的我得到這個問題,我在清單文件中添加這兩行

安卓硬件加速=「假」, 機器人:largeHeap =「真」

再也不工作,如何解決的OutOfMemoryError

這是我的logcat

04-05 12:01:43.287 11314-17193/info.sherpify.pavithracs.sherpifys E/art: Throwing OutOfMemoryError "Failed to allocate a 996567422 byte allocation with 7078106 free bytes and 117MB until OOM" 
04-05 12:01:43.289 11314-17193/info.sherpify.pavithracs.sherpifys E/AndroidRuntime: FATAL EXCEPTION: Thread-88543 
                        Process: info.sherpify.pavithracs.sherpifys, PID: 11314 
                        java.lang.OutOfMemoryError: Failed to allocate a 996567422 byte allocation with 7078106 free bytes and 117MB until OOM 
                         at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:316) 
                         at com.android.volley.toolbox.DiskBasedCache.readString(DiskBasedCache.java:526) 
                         at com.android.volley.toolbox.DiskBasedCache.readStringStringMap(DiskBasedCache.java:549) 
                         at com.android.volley.toolbox.DiskBasedCache$CacheHeader.readHeader(DiskBasedCache.java:392) 
                         at com.android.volley.toolbox.DiskBasedCache.initialize(DiskBasedCache.java:155) 
                         at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:85) 

看到下面的編碼我是通過使用畢加索將圖像設置爲imageview。

package info.sherpify.pavithracs.sherpifys.adapter; 

/** 
* Created by pavithracs on 11/1/17. 
*/ 

import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.squareup.picasso.Picasso; 

import java.util.List; 

import info.sherpify.pavithracs.sherpifys.R; 
import info.sherpify.pavithracs.sherpifys.model.Categorieslist; 
import info.sherpify.pavithracs.sherpifys.utilis.NetworkUtils; 


public class RecyclerViewAdapterSearch extends RecyclerView.Adapter<RecyclerViewAdapterSearch.ViewHolder> { 

    private List<Categorieslist> items; 
    private OnItemClickListener onItemClickListener; 

    public RecyclerViewAdapterSearch(List<Categorieslist> items) { 
     this.items = items; 
    } 

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) { 
     this.onItemClickListener = onItemClickListener; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_home_search, parent, false); 
     return new ViewHolder(v); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 
     Categorieslist item = items.get(position); 
     Log.i("Items mentor",""+item); 

     try { 


      holder.textmentordesignation.setText(item.getFieldUserDesig()); 
      holder.textyearofexperience.setText(item.getFieldUserExp()+" Years"); 
      holder.textmentorname.setText(item.getFieldUserName()); 
      holder.textcurrentcompany.setText("Current: "+item.getFieldUserCurrentCompany()); 
      holder.textpreviouscompany.setText("Previous: "+item.getFieldUserPreviousCompany()); 

      Log.i("Field--",""+item.getFieldUserDesig()); 
      Log.i("Field--",""+item.getFieldUserName()); 
      Log.i("Field--",""+item.getFieldUserExp()); 



      holder.image.setImageBitmap(null); 
      Picasso.with(holder.image.getContext()).load(NetworkUtils.BASE_IMAGE_URL_USER_PICS +item.getFieldUserProfilepic()).resize(50, 50).error(R.drawable.com_facebook_profile_picture_blank_portrait).into(holder.image); 

      holder.itemView.setTag(item); 
      holder.relativementor.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        onItemClickListener.onItemClick(v,items.get(position).getFieldUserId(),items.get(position).getFieldUserName(),items.get(position).getFieldUserDesig(),items.get(position).getFieldUserSummary(),items.get(position).getFieldUserProfilepic(),items.get(position).getFieldUserCurrentCompany(),items.get(position).getFieldMentorId()); 
       } 
      }); 


     } catch (NullPointerException e) { 
      e.printStackTrace(); 
     } 


    } 

    @Override 
    public int getItemCount() { 
     return items.size(); 
    } 


    protected static class ViewHolder extends RecyclerView.ViewHolder { 
     public TextView textmentordesignation,textyearofexperience,textmentorname,textcurrentcompany,textpreviouscompany; 
     public ImageView image; 
     RelativeLayout relativementor; 

     public ViewHolder(View itemView) { 
      super(itemView); 
      image = (ImageView) itemView.findViewById(R.id.image); 
      textmentordesignation = (TextView) itemView.findViewById(R.id.textmentordesignation); 
      textyearofexperience = (TextView) itemView.findViewById(R.id.textyearsofexperience); 
      textmentorname = (TextView) itemView.findViewById(R.id.textmentorname); 
      textcurrentcompany = (TextView) itemView.findViewById(R.id.textcurrentcompany); 
      textpreviouscompany = (TextView) itemView.findViewById(R.id.textpreviouscompany); 
      relativementor = (RelativeLayout) itemView.findViewById(R.id.relativementor); 

     } 
    } 

    public interface OnItemClickListener { 
     void onItemClick(View view, String viewModel, String cName, String uId, String catId,String catProfilepic,String currentcompany,String mentorid); 
    } 

} 
+1

請添加完整的錯誤日誌輸出! –

+0

我懷疑你將能夠在很多Android設備上加載那麼多的數據......你加載了多少圖片以獲得996567422byte(= 996.567422Mb) – AxelH

+0

[Android:java.lang.OutOfMemoryError:Failed to分配一個23970828字節分配與2097152空閒字節和2MB,直到OOM](http://stackoverflow.com/questions/32244851/androidjava-lang-outofmemoryerror-failed-to-allocate-a-23970828-byte-allocatio) –

回答

0

你可以滑行檢查:

的build.gradle

dependencies { compile 'com.github.bumptech.glide:glide:3.7.0' }

Log.d("imageurl", ""+NetworkUtils.BASE_IMAGE_URL_USER_PICS+item.getFieldUserProfilepic());   

Glide.with(context).load(NetworkUtils.BASE_IMAGE_URL_USER_PICS +item.getFieldUserProfilepic()).override(600, 200).error(R.drawable.com_facebook_profile_picture_blank_portrait).into(holder.image); 

,並請張貼調試圖像的URL,如果可能的話

0

試試這個,創建文件夾名稱drawable-nodpi放置所有佔位符或錯誤圖片com_facebook_profile_picture_blank_portrait該文件夾內,並替換您的代碼加載圖像與畢加索以下

Picasso 
    .with(holder.image.getContext()) 
    .load(NetworkUtils.BASE_IMAGE_URL_USER_PICS +item.getFieldUserProfilepic()) 
    .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) //add this line 
    .resize(50,50) 
    .error(R.drawable.com_facebook_profile_picture_blank_portrait) 
    .into(holder.image); 
相關問題