2015-03-11 3 views
1

У меня есть приложение для Android, и в нем есть функция, которая загружает некоторые изображения с использованием asynctask. Я думаю, что если я смогу сохранить эти изображения в качестве кеша, я могу повысить производительность приложения, так как загружаю много изображений. Как я могу это сделать? Как я могу хранить кеш в своем приложении для 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(); 

     } 

    } 
+1

Это может помочь: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html –

ответ

0

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

0

Кажется, что это может быть простым в использовании библиотеки сторонних производителей, таких как Picasso, Universal Image Loader или Volley

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