在android应用程序中使用Cache
我正在开发一个android应用程序,其中有一个功能,可以使用asynctask加载一些图像。我认为,如果我能将这些图像保存为缓存,我可以提高应用程序的性能,因为我正在加载大量图像。我该怎么做?如何在android应用程序中保留缓存 我的班级在android应用程序中使用Cache,android,caching,image-caching,Android,Caching,Image Caching,我正在开发一个android应用程序,其中有一个功能,可以使用asynctask加载一些图像。我认为,如果我能将这些图像保存为缓存,我可以提高应用程序的性能,因为我正在加载大量图像。我该怎么做?如何在android应用程序中保留缓存 我的班级 public class MovieFragment extends Fragment { private ViewPager viewPager; private PageAdapter pageAdapter; private
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();
}
}
公共类电影片段扩展片段{
私人视页机视页机;
专用页面适配器;
专用可视页面适配器;
私人ArrayList电影类别;
私有片段;
私人活动;
私有公共变量公共变量;
私人电影类别;
私人对话;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.movie_碎片,容器,假);
片段=这个;
activity=this.getActivity();
commonVariable=(commonVariable)activity.getApplication();
viewPager=(viewPager)view.findViewById(R.id.news\u page\u viewPager);
dialog=新建对话框(this.getActivity(),
android.R.style.Theme(半透明的NoTitleBar);
新建背景().execute();
返回视图;
}
公共类后台任务{
@凌驾
受保护的Void doInBackground(Void…参数){
filmCategory=JSONServices.getCategory();
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
commonVariable.setCategory(电影类别);
if(filmCategory!=null){
pageAdapter=新的pageAdapter(
fragment.getChildFragmentManager(),filmCategory,
活动);
viewPager.setAdapter(页面适配器);
}否则{
Toast.makeText(活动,“无活动Internet连接”,
Toast.LENGTH_LONG).show();
}
dialog.dismise();
viewPager.setOnPageChangeListener(新的OnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
//TODO自动生成的方法存根
//commonVariable.setFilmDetails((FilmCategory)
//category.getFilm().get(position));
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
//TODO自动生成的方法存根
}
@凌驾
公共无效onPageScrollStateChanged(int arg0){
//TODO自动生成的方法存根
}
});
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
setContentView(R.layout.dialog);
dialog.show();
super.onPreExecute();
}
}
如果您正在从服务器下载图像,我认为Volley库可以帮助您。它将删除样板代码,并且易于阅读。它还支持缓存。如果您想实现缓存,请遵循链接。请避免asyctask,它将无法在配置更改后继续运行。使用asynctaskLoader:-)似乎这可能是最简单的方法o使用第三方库,如,或
在尝试实施图像缓存系统之前,我会先检查这些选项。在大多数情况下,这三个选项中的一个将处理您需要完成的所有任务。这可能会有所帮助: