Использование кеша в приложении для Android

Я разрабатываю приложение для Android, и в нем есть функция, которая загружает некоторые изображения с помощью асинхронной задачи. Я думаю, что если я смогу сохранить эти изображения в виде кеша, я смогу повысить производительность приложения, поскольку я загружаю много изображений. Как я могу это сделать? Как я могу сохранить кеш в своем приложении для Android?

Мои занятия

public class MovieFragment extends Fragment {

    private ViewPager viewPager;
    private PageAdapter pageAdapter;
    private ViewPageAdapter adapter;
    private ArrayList<BaseElement> filmCategory;
    private Fragment fragment;
    private Activity activity;
    private CommonVariable commonVariable;
    private FilmCategory category;
    private Dialog dialog;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.movie_fragment, container, false);

        fragment = this;

        activity = this.getActivity();

        commonVariable = (CommonVariable) activity.getApplication();



        viewPager = (ViewPager) view.findViewById(R.id.news_page_viewpager);

        dialog = new Dialog(this.getActivity(),
                android.R.style.Theme_Translucent_NoTitleBar);


        new BackGround().execute();

        return view;
    }

    public class BackGround extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            filmCategory = JSONServices.getCategory();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {

            commonVariable.setCategory(filmCategory);

            if (filmCategory != null) {

                pageAdapter = new PageAdapter(
                        fragment.getChildFragmentManager(), filmCategory,
                        activity);

                viewPager.setAdapter(pageAdapter);

            } else {

                Toast.makeText(activity, "No Active Internet Connection",
                        Toast.LENGTH_LONG).show();

            }

            dialog.dismiss();

            viewPager.setOnPageChangeListener(new OnPageChangeListener() {

                @Override
                public void onPageSelected(int position) {
                    // TODO Auto-generated method stub
                    // commonVariable.setFilmDetails((FilmCategory)
                    // category.getFilm().get(position));

                }

                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {

                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageScrollStateChanged(int arg0) {

                    // TODO Auto-generated method stub

                }
            });

            super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            dialog.setContentView(R.layout.dialog);
            dialog.show();
            super.onPreExecute();

        }

    }

person CraZyDroiD    schedule 11.03.2015    source источник
comment
Это может помочь: developer.android.com/training/displaying-bitmaps/   -  person Daniel Nugent    schedule 11.03.2015


Ответы (2)


если вы загружаете изображения с сервера, я думаю, вам поможет библиотека Volley. он удалит шаблонный код и легко читается, а также поддерживает кэширование. и если вы хотите внедрить кеш, перейдите по этой ссылке. и, пожалуйста, избегайте asyctask, он не переживет изменения конфигурации. используйте asynctaskLoader :-)

person mcd    schedule 11.03.2015

Кажется, проще всего использовать стороннюю библиотеку, такую ​​как Picasso, Универсальный загрузчик изображений или Залп

Я бы сначала проверил их, прежде чем пытаться реализовать вашу систему для кэширования изображений. В большинстве случаев один из этих трех вариантов справится со всем, что вам нужно сделать.

person David Argyle Thacker    schedule 11.03.2015