У меня действительно есть приложение для памяти, которое на самом деле не то, к чему я собирался. В среднем он находится около 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
Утечки памяти нормальными для приложений для Android? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1745670784
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;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/32063550/are-memory-leaks-normal-for-android-apps[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия