Утечки памяти нормальными для приложений для Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Утечки памяти нормальными для приложений для Android?

Сообщение Anonymous »

У меня действительно есть приложение для памяти, которое на самом деле не то, к чему я собирался. В среднем он находится около 90 МБ и переходит между этим и 120 МБ. Что странно, потому что на прошлой ночи он был только около 40 МБ, что, очевидно, более приемлемо.
Моя первая проблема возникает, когда я просто запускаю приложение. Вторая проблема в том, когда я прокручиваю свой список ListView, я вижу, как память заполняется большими кусками за раз.
soo, теперь я ухожу на утечках памяти.
Я начал с куча с новой функцией/кнопкой Android Studio/кнопкой 'Dilm Java Heap'.
Итак, на отображении всего содержания куча дампа я время от времени заметил действительно большие числа, особенно когда речь идет о LinkedHashmaps и Hashmaps. src = "https://i.sstatic.net/hmafa.png" /> < /p>

Для объема работы, которую приложение делает перед тем, как добраться до списки И как мне найти их с этого момента? Адаптер, а также отправляет ObjectId так, чтобы новое намерение могло принести данные из SQLite DB. < /p>

public void DisplayList(final List DL)
{

ListAdapter listAdapter = new ParseAdapter(this,DL);
ListView listView = (ListView) findViewById(R.id.Parse_list);
listView.setAdapter(listAdapter);

listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id)
{
String food = String.valueOf(parent.getItemAtPosition(position));
//setContentView(R.layout.deal_showcase);

Intent i = new Intent(getApplicationContext(),Deal_Showcase.class);

i.putExtra("objectid",DL.get(position).getObjectID());
//Intent intent = new Intent(this,DL.class);
startActivity(i);

}
}

);
}

//Adapter class
public class ParseAdapter extends ArrayAdapter
{

ParseAdapter(Context context, List adapResource) {
super(context, R.layout.parse_list_layout, adapResource);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
View customView = layoutInflater.inflate(R.layout.parse_list_layout, parent, false);

//PLease note that after implementing a ViewHolder is did not really do anything for me
//Also the ViewHolder implementation is not here at the moment but this is the version of //the code right before the ViewHolder got implemented.
String singleItem = getItem(position).getName();
TextView rText = (TextView) customView.findViewById(R.id.pName);

TextView yText = (TextView) customView.findViewById(R.id.pDistance);
ImageView image = (ImageView) customView.findViewById(R.id.imageView);

rText.setText(getItem(position).getName());
yText.setText(Integer.toString(getItem(position).getDistance()));
Picasso.with(this.getContext()).load("file://"+getItem(position).getArt_work_uri())
.resize(200,200)
.into(image);

return customView;
}

}
< /code>

код редактирование 1: < /p>

public class ParseAdapter extends ArrayAdapter
{
//Inner static class ViewHolder
static class ViewHolder
{
TextView Distance;
TextView DealName;
ImageView image;
}

ParseAdapter(Context context, List adapResource) {
super(context, R.layout.parse_list_layout, adapResource);
}
View convertView;

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;

if (convertView==null)
{

LayoutInflater layoutInflater = LayoutInflater.from(getContext());
convertView = layoutInflater.inflate(R.layout.parse_list_layout, parent, false);
//ViewHolder holder setup
holder = new ViewHolder();
holder.DealName = (TextView) convertView.findViewById(R.id.pName);
holder.Distance = (TextView) convertView.findViewById(R.id.pDistance);
holder.image = (ImageView) convertView.findViewById(R.id.imageView);

//Store the holder in the view
convertView.setTag(holder);
}
else
{
//Get the holder if it already exists
holder = (ViewHolder) convertView.getTag();
}

customView.findViewById(R.id.imageView);

holder.DealName.setText(getItem(position).getName());
holder.Distance.setText(Integer.toString(getItem(position).getDistance()));
Picasso.with(this.getContext()).load("file://"+getItem(position).getArt_work_uri())
//.memoryPolicy(MemoryPolicy.NO_CACHE )
.networkPolicy(NetworkPolicy.NO_CACHE)
.resize(200,200)
.into(holder.image);

return convertView;
}

}


Подробнее здесь: https://stackoverflow.com/questions/320 ... droid-apps
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»