Приложение потребляет много памяти (Viewpager/RecyclerView)

272
05 мая 2017, 16:30

В приложении 2 фрагмента. Переключаюсь между фрагментами через ViewPager. Адаптер:

  public class PagerAdapterFragment extends FragmentStatePagerAdapter {

    public PagerAdapterFragment(FragmentManager fragmentManager) {
        super(fragmentManager);
    }
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return Fragment1.newInstance();
            case 1:
                return Fragment2.newInstance();
            default:
                return null;
        }
    }
    @Override
    public int getCount() {
        return 2;
    }
  @Override
    public boolean isViewFromObject(View view, Object object) {
        if (object instanceof Fragment1) {
            view.setTag(0);
        }
        if (object instanceof Fragment2) {
            view.setTag(1);
        }
        return super.isViewFromObject(view, object);
    }

}

Меняю задний фон у фрагментов так:

  private void nextFon(ViewPager viewPager) {
    viewPager.setPageTransformer(true, new ViewPager.PageTransformer() {
        @Override
        public void transformPage(View view, float position) {
            LayerDrawable background = (LayerDrawable) viewPager.getBackground();
            background.getDrawable(0).setAlpha(255);
            background.getDrawable(1).setAlpha(255);
            int index = (Integer)view.getTag();
            Drawable currentDrawableInLayerDrawable;
            currentDrawableInLayerDrawable = background.getDrawable(index);
            if (position <= -1 || position >= 1) {
                currentDrawableInLayerDrawable.setAlpha(0);
            } else if (position == 0) {
                currentDrawableInLayerDrawable.setAlpha(255);
            } else {
                currentDrawableInLayerDrawable.setAlpha((int) (255 - Math.abs(position * 255)));
            }
        }
    });
}

В RecyclerView вывожу изображения из ресурсов их порядком 40 шт.

  @Override
public void onBindViewHolder(ViewHolder holder, int position) {
    switch (holder.getItemViewType()) {
        case 0:
            posInList = position / 2;
            Picasso.with(mContext).load(imageModel.get(posInList)).resize(320, 320)
                    .into(holder.getItemImageView());
            break;
        case 2:
            break;
    }
}

В адаптер передаю путь до изображений , ниже код по добавлению изображений в коллекцию:

 public ArrayList<String> getImages() {
    for (int i = 0; i <= 41; i++) {
        if (ChekFileInFolder.isFileInFolder(i)) {
            letter = "a";
        } else {
            letter = "h";
        }
        {
            fileUri = Uri.parse("android.resource://test/" +
                    (Context.getAppContext().getResources()
                            .getIdentifier((letter) + i, "drawable",
                                    "test")));
            imag.add(i, fileUri.toString());
        }
    }
    return imag;
}

Изображения все 300 кб. и разрешения 1280/720 - это фон первого фрагмента и второго.

READ ALSO
Как узнать из главного потока, что побочный поток завершился ошибкой?

Как узнать из главного потока, что побочный поток завершился ошибкой?

Есть главный поток(1) и из него вызывается побочный поток(2)

228
Использование атрибутов

Использование атрибутов

Как я могу использовать данный атрибут для другой вьюшки?

220
Mybathis 3 set null params as empty string

Mybathis 3 set null params as empty string

Настраиваю Mybathis 3 в связке с PostgreSQL при попытке совершить insert в базу обнаружилась неприятная особенность: вместо null в запросе были сформированы...

264
Как через библиотеку gson взять 3 элемент?

Как через библиотеку gson взять 3 элемент?

// --- String input = text; JsonParser parser = new JsonParser(); JsonObject mainObject = parserparse(input)

363