Android 图片加载优化(持续更新中)

 1.ListView 的item 图片错乱问题

前面一篇整理了解析Json数据后显示到listview上,关于图片加载没有多做解释,在运行的过程中出现了item 图像错乱的问题,后来查了资料才知道,因为listview的缓存机制,正确的item 没有对应正确的图片URL,所以更新UI 时出现了错乱,解决方法也分简单:就是给imgeview 加个tag,然后需要更新UI时先判断tag是否正确(我是将URL作为图片的tag),正确才可以更新UI。

imageview.setTag(XXXX);
imageview.getTag(XXXX);

2.将加载过的图片放在缓存中,这样加载过的图片就不需要再去加载,节省流量。Android提供了一个不错的类LruCache类,我整理了一下使用注意点:(重要的部分还要重点学习)

创建LruCache mCache ——>初始化LruCache:

mCache=new LruCache<String,Bitmap>(cachesize){
            @Override
            protected int sizeOf(String key, Bitmap value) {
                //在每次存入缓存时调用
                return value.getByteCount();
            }
        };

LruCache(K,V)中,K:需要保存的名字;V:需要保存的对象;

cachesize 一般是可用内存(

MaxMemory= (int) Runtime.getRuntime().maxMemory()
)的1/4.

sizeOf()返回的是存储图片需要的内存。

3.添加两个方法:

public void addBitmapToCache(String Url,Bitmap bitmap){
        if(getBitmapFromCache(Url)==null){
            mCache.put(Url,bitmap);
        }

    }
    public Bitmap getBitmapFromCache(String Url){

        return mCache.get(Url);

    }
这样在主程序中就可以判断,如果缓冲中已经有了该图片,就不加载,直接从缓冲中取得,如果没有的话,就启动线程加载,并同时把返回的图片存储在cache 中。


3.控制ListView滑动时不加载:

适配器实现OnScrollListenner接口,重写两个主要的方法:

public void onScrollStateChanged(AbsListView view, int scrollState) {
        if(scrollState==SCROLL_STATE_IDLE){
            //没有滚动项,开始加载
            imageLoader.LoadImages(mStart,mEnd);//没有进行预加载
        }else{
            //停止加载
            imageLoader.CancelAllTask();
        }

    }
/**
     *
     * @param view 可见视图
     * @param firstVisibleItem 第一个可见元素
     * @param visibleItemCount 可见元素数目
     * @param totalItemCount list 中的总数
     */
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        mStart=firstVisibleItem;
        mEnd=firstVisibleItem+visibleItemCount;
        if(mFirst&&visibleItemCount>0){//当前列表第一次启动而且item已经绘出
            imageLoader.LoadImages(mStart,mEnd);
            mFirst=false;
        }

    }
然后记得要注册监听器。

接着加载指定区间的图片:

 public void LoadImages(int start,int end){
        for (int i = start; i <end; i++) {
            String Url=NewsAdapter.Urls[i];//获得Url
            Bitmap bitmap=getBitmapFromCache(Url);
            if(bitmap==null){
                MyAsyncTask task=new MyAsyncTask(Url);//因为现在是通过tag找到imageview,所以直接通过imageview设置就不合理
                mtask.add(task);
            }else{
              ImageView imagview= (ImageView) mlistview.findViewWithTag(Url);//通过URL获得imageview
                imagview.setImageBitmap(bitmap);

            }
        }







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要优化rk3128 android 5.1的开机速度,可以采取以下几个措施: 1. 关闭启动时不必要的自启动应用程序:在设置的应用程序管理,禁用那些不需要在开机时自动启动的应用程序。这样可以减少开机时的负担,提升开机速度。 2. 清理系统缓存:打开设置,找到存储选项,进入缓存数据,并点击清除缓存按钮。这将清除系统的临时文件和无用数据,从而提高启动速度。 3. 禁用不必要的动画效果:在开发者选项,找到动画选项,并将所有的动画效果设置为关闭。这可以减少开机时显示的动画,加快开机速度。 4. 更新系统和应用程序:通过检查系统和应用程序是否有更新,并及时安装最新版本,可以修复一些bug和优化性能,从而提高开机速度。 5. 减少开机自启动应用程序:进入设置-应用程序管理-自启动管理,关闭那些不必要的应用程序自启动。这样可以减少开机时需要加载的应用程序数量,提高开机速度。 6. 运行内存清理:在设置-内存,找到清理内存选项,点击清理内存按钮。这将释放占用了内存的信息和进程,优化系统性能,加快开机速度。 通过以上优化措施,可以提高rk3128 android 5.1的开机速度,让设备更加流畅高效。 ### 回答2: 要优化RK3128 Android 5.1的开机速度,可以采取以下措施: 1. 清理启动项:在系统设置禁用不必要的应用程序的自启动选项。这样可以减少开机时需要加载的应用程序数量,提升开机速度。 2. 禁用冷启动:冷启动是指应用程序第一次运行时需要加载的相关数据和资源,导致启动时间较长。可以通过在开发者选项禁用冷启动来减少开机时应用程序的加载时间。 3. 清理缓存:开机时,系统会加载缓存文件,这些文件可能会导致开机速度变慢。因此,可以定期清理系统缓存,以提高开机速度。 4. 禁用动画效果:在系统设置,禁用开机动画效果可以减少开机时间。可以通过进入“开发者选项”并将“窗口动画缩放”、“过渡动画缩放”和“动画持续时间缩放”调整为较低的数值或关闭来实现。 5. 更新系统:如果RK3128 Android 5.1的系统版本较旧,建议升级到最新的系统版本。新版本通常会修复一些开机速度方面的问题,并提供更好的性能和稳定性。 通过以上方法优化RK3128 Android 5.1的开机速度,可以更快地启动设备,并提升使用体验。 ### 回答3: 为了优化rk3128 android5.1的开机速度,可以采取以下几个方法: 1. 清理系统垃圾:首先,可以通过清理系统垃圾文件来释放存储空间,从而提升开机速度。可以使用一些系统清理工具,如CCleaner等来清理系统的无效文件和缓存。 2. 禁用开机自启动程序:在系统设置,可以禁用一些不必要的开机自启动程序。这些自启动程序会消耗系统资源,导致开机速度变慢。通过禁用不必要的自启动程序,可以减少开机时的负荷,从而提升开机速度。 3. 更新系统和应用程序:及时更新系统和应用程序可以优化开机速度。新版本的系统和应用程序通常会修复一些bug,并且优化系统性能。可以定期检查系统更新和应用程序更新,并及时进行更新。 4. 减少开机项:在系统设置,可以选择性地关闭一些不必要的开机项。这些开机项会在系统启动时加载,影响开机速度。可以根据自己的需求,选择性地关闭不需要的开机项。 5. 使用高速存储卡:如果设备支持外置存储卡,可以使用高速的存储卡来提升开机速度。高速存储卡读写速度更快,可以加快系统的启动时间。 通过以上几个方法的结合使用,可以有效地优化rk3128 android5.1的开机速度,提升用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值