呱呱侠 2015-05-22 11:00 采纳率: 10%
浏览 2530
已结题

android项目锁屏图片出现闪屏,求分析。

图片说明
图片说明
我采用了ImageLoader框架,加载图片,发现开机的时候,经常瞬间显示默认的那种图片,随后再显示要展现的广告图片。不知道什么原因,请大神帮忙看一下。
附上代码:
一,imageloader 对图片进行设置的代码

 private ImageLoaderController(Context context) {
    mImageLoader = ImageLoader.getInstance(); //实例化ImageLoader,每个布局里面都要实例化后再使用

    File cacheDir = StorageUtils.getOwnCacheDirectory(context,
            "imageloader/Cache");
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
            .threadPriority(Thread.NORM_PRIORITY - 2)
            .threadPoolSize(3)   //线程池数量
            .discCache(new UnlimitedDiscCache(cacheDir)) //自定义缓存路径
            .denyCacheImageMultipleSizesInMemory()
            .discCacheFileNameGenerator(new Md5FileNameGenerator())  //将保存的时候的URI名称用MD5加密
            .tasksProcessingOrder(QueueProcessingType.LIFO)
            .memoryCache(new WeakMemoryCache())
            .build(); //开始构建

    ImageLoader.getInstance().init(config);  //全局初始化此配置

    optionsBig = getDisplayImageOptions(R.drawable.image_offer_default);
    optionsIcon = getDisplayImageOptions(R.drawable.icon_default);
    optionsGift = getDisplayImageOptions(R.drawable.icon_gift);
    optionsBanner = getDisplayImageOptions(R.drawable.image_banner_default);

}

public static synchronized ImageLoaderController getInstance(Context context) {
    if (null == mVolleyContrller) {
        mVolleyContrller = new ImageLoaderController(
                context.getApplicationContext());
    }
    return mVolleyContrller;
}

/**
 * 图片请求配置
 * 
 * @param default_drawable
 * @return
 */
private DisplayImageOptions getDisplayImageOptions(int default_drawable) {

    //显示图片的各种格式的设置
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(default_drawable) //没有图片资源时的默认图片
            .showImageOnFail(default_drawable)      //加载失败的图片
            .showImageOnLoading(default_drawable) //加载图片是的图片
            .cacheInMemory(true)                 //启用内存缓存           
            .cacheOnDisc(true)                    // 设置下载的图片是否缓存在SD卡中
            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)  //图片会缩放到目标大小
            // .displayer(new RoundedBitmapDisplayer(20))  //设置显示风格这里是圆角矩形
            .displayer(new SimpleBitmapDisplayer())
            .build();
    return options;
}

/**
 * 加载图片
 * 
 * @param uri
 *            图片地址
 * @param imageView
 *            ImageView
 * @param defaultDrawable
 *            默认的图片
 * @param listener
 *            回调
 */
public void displayGift(String uri, ImageView imageView,
        ImageLoadingListener listener) {
    mImageLoader.displayImage(uri, imageView, optionsGift, listener);
}

/**
 * 加载图片
 * 
 * @param uri
 *            图片地址
 * @param imageView
 *            ImageView
 * @param listener
 *            加载监听
 */
public void displayIcon(String uri, ImageView imageView,
        ImageLoadingListener listener) {
    mImageLoader.displayImage(uri, imageView, optionsIcon, listener);
}

/**
 * 加载图片
 * 
 * @param uri
 *            图片地址
 * @param imageView
 *            ImageView
 * @param listener
 *            加载监听
 */
public void displayBigImage(String uri, ImageView imageView,
        ImageLoadingListener listener) {
    mImageLoader.displayImage(uri, imageView, optionsBig, listener);
}
/**
 * 加载Banner图片
 * 
 * @param uri
 *            图片地址
 * @param imageView
 *            ImageView
 * @param listener
 *            加载监听
 */
public void displayBannerImage(String uri, ImageView imageView,
        ImageLoadingListener listener) {
    mImageLoader.displayImage(uri, imageView, optionsBanner, listener);
}

二,加载图片时的代码,

    /**
 * 展示广告图片
 */
private void setOfferData() {

    if (null != mOffer) {
        if (TextUtils.isEmpty(mOffer.background)) {
            mIvOfferImage.setImageResource(R.drawable.image_splash);
        } else {
            ImageLoaderController.getInstance(mContext).displayBigImage(mOffer.background, mIvOfferImage, 
                    new ImageLoadingListener() {


                @Override
                public void onLoadingStarted(String imageUri, View view) {

                }

                @Override
                public void onLoadingFailed(String imageUri, View view,
                        FailReason failReason) {

                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                        mIvOfferImage.setImageBitmap(loadedImage);


                    //mOfferImage = loadedImage;

                    // 为避免CPU休眠,强制刷新一次
                    mRootView.invalidate();
                    // 发送广告展现报告
                    ReportController.getInstance().report(
                            ReportType.RT_ShowAd, mOffer.tr);
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {

                }
            });
  • 写回答

1条回答 默认 最新

  • 进无止 2015-08-14 15:59
    关注

    跟你说个最贱的方法卸载原装的;
    需要获得更高的运行权限,在默认之前加载你的软件

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题