Добрый вечер,Фрагмент TabLayout/GridView OutMemory
При создании мой первый реальный личный проект у меня есть 5 фрагментов, каждый содержащий TabLayout с 2/3 фрагментов. Каждый из них имеет GridView около 50 изображений (см. 200 для некоторых). Но когда я переключаюсь между фрагментами, я быстро добираюсь до OutMemory. Я нахожусь в фазе создания/тестирования, и я использую 8 Drawable, присутствующих в приложении (размер 400px * 250px, размер: от 40 до 200 КБ).
Против, пространство памяти, используемое при использовании, первый выбор - это запускаемые кости (8 изображений), и каждый последующий выбор представляет собой открытие фрагмента, содержащего TabLayout. До 30 секунд или я возвращаюсь к первому фрагменту.
Создание TabLayout в фрагментах:
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager());
FragmentList fla = FragmentList.newInstance("ONE", ContextCompat.getColor(getContext(), R.color.w_blue_grey_40));
adapter.addFragment(fla, "ONE");
fla = FragmentList.newInstance("TWO", ContextCompat.getColor(getContext(), R.color.w_blue_grey_40));
adapter.addFragment(fla, "TWO");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends <strong>FragmentStatePagerAdapter</strong> {
private final List<FragmentList> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(FragmentList fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Я использую Пикассо ЕТ шаблон держатель в моем GridViewAdapter:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TestHolder holder = null;
if (row == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
row = mInflater.inflate(R.layout.card_test, null);
holder = new TestHolder();
holder.test_image = (ImageView) row.findViewById(R.id.test_image);
row.setTag(holder);
} else {
holder = (TestHolder) row.getTag();
}
Test test = data.get(position);
Picasso.with(context).load(test.getImage()).into(holder.test_image);
return row;
}
class TestHolder {
ImageView test_image;
}
Thx все для ваших ответов.
попробовать этот ответ ... http://stackoverflow.com/a/31260418/3678308 –
* 400px * 250px размер, размер: 40Kb между и 200Кб * нет, размер для заданной ширины и высоты для Const drawable и это 400kB – Selvin