1

我正在开发一个 android 应用程序,其中有一个功能可以使用 asynctask 加载一些图像。我想如果我可以将这些图像保存为缓存,我可以在加载大量图像时提高应用程序的性能。我怎样才能做到这一点?如何在我的 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();

        }

    }
4

2 回答 2

0

如果您从服务器下载图像,那么我认为 Volley 库可以帮助您。它将删除样板代码并且易于阅读它还支持缓存。如果您想实现缓存,请点击链接。并且请避免使用 asyctask,它不会在配置更改后继续存在。使用 asynctaskLoader :-)

于 2015-03-11T05:07:21.450 回答
0

似乎使用第三方库(如PicassoUniversal Image LoaderVolley )可能是最简单的

在尝试实现图像缓存系统之前,我会先检查这些内容。在大多数情况下,这三个选项之一将处理您需要完成的所有事情。

于 2015-03-11T05:49:37.883 回答