今天测试提了个问题,说微信分享反应很慢,而且说上个版本都还是快的,这个版本就慢了,我回忆了下,这个版本关于分享的都没做改动啊,我就去调查了下原因,原来是分享时候的图片超级大导致的,上个版本分享的图片很小所以很快,原因找到了,开始着手解决。

1 分享的图片是服务器返回的,所以大小由服务器控制,既然图片太大,好几M,那么只需要服务端对图片压缩处理一下再返回给我们就好了,友盟分享的官方文档给的图片大小的建议:

所以按照文档的要求返回图片的尺寸,拉起微信的速度肯定会很快,如果服务端没法压缩,那么就我们客户端自己来压缩处理也是可以的哈。

2 自己压缩的话,首先要把需要分享用到的图片下载下来,正好官方给出了好几种加载图片的方式

我们可以使用本地文件或者bitmap文件的方式加载,我这里使用bitmap的方式,首先是下载图片

    /*** 下载图片保存到本地* @param context* @param imageUrl*/public static void downloadShareImg(final Context context,final String imageUrl) {FileUtil.clearBitmap();Glide.with(context).load(imageUrl).asBitmap().into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(final Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {FileUtil.saveBitmap(context, bitmap);}@Overridepublic void onLoadFailed(Exception e, Drawable errorDrawable) {super.onLoadFailed(e, errorDrawable);}});}

我使用glide对图片进行下载,下载之前记得要删除之前下载过的分享的图片,不然有可能会出现分享图片错乱的问题,然后下载好后,保存到本地

 /*** 保存bitmap到本地** @param context* @param mBitmap* @return*/public static String saveBitmap(Context context, Bitmap mBitmap) {String savePath;File filePic;if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {savePath = SD_PATH;} else {savePath = context.getApplicationContext().getFilesDir().getAbsolutePath()+ IN_PATH;}try {filePic = new File(savePath + SHARE_IMAGE + ".jpg");if (!filePic.exists()) {filePic.getParentFile().mkdirs();filePic.createNewFile();}FileOutputStream fos = new FileOutputStream(filePic);mBitmap.compress(Bitmap.CompressFormat.JPEG, 25, fos);fos.flush();fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}return filePic.getAbsolutePath();}

保存图片的时候,要对图片进行压缩,这也是我们下载图片的目的哈,使用bitmap.compress()方法进行压缩,压缩好之后就是获取bitmap,由于在下载的时候已经对图片进行了压缩,所以这里就不用再对图片进行二次采样了。

/*** 获取下载到本地的图片的bitmap* @return*/public static Bitmap getBitmap(){try {FileInputStream fis = new FileInputStream(SHARE_IMAGE_SD_PATH);return BitmapFactory.decodeStream(fis);
//          BitmapFactory.Options options = new BitmapFactory.Options();
//          options.inJustDecodeBounds = true;
//          BitmapFactory.decodeStream(fis,null, options);
//          调用上面定义的方法计算inSampleSize值
//          options.inSampleSize = 2;
//          使用获取到的inSampleSize值再次解析图片
//          options.inJustDecodeBounds = false;
//          return BitmapFactory.decodeStream(fis,null, options);} catch (FileNotFoundException e) {e.printStackTrace();return null;}}

记得下载之前要清除原来的图片

  /*** 清除下载的本地分享图片*/public static void clearBitmap() {File filePic = new File(SHARE_IMAGE_SD_PATH);if (filePic.exists()) {filePic.delete();}}

一切准备就绪后,就是在分享的地方,获取到下载好的bitmap,然后要先判断bitmap是否为null,如果为null就使用网络原图,防止分享出问题(慢总比出问题强)

 Bitmap bitmap = FileUtil.getBitmap();if(bitmap == null){web.setThumb(new UMImage(activity, imageUrl));  //网络缩略图}else{web.setThumb(new UMImage(activity, bitmap));  //本地缩略图}

OK,这样就在服务端没法修改图片的大小的情况下,解决了umeng分享拉起微信很慢的问题。

友盟umeng分享微信和朋友圈,图片太大,拉起微信很慢的处理方案相关推荐

  1. 微信 android分享到朋友圈图片大小,android微信分享到朋友圈 图片过大闪退

    原先集成过微信的分享,分享到朋友圈和微信对话都没有问题. 项目上线由于图片各异,最近会偶尔出现分享到朋友圈时候根本就打不开share的界面,但是到微信聊天是可以: 下面贴出先前的代码: Bitmap ...

  2. IOS友盟 社会化分享 社会化iOS组件 分享集成

    由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ.微信AppID之后调用下面的方法,[UMSocialConfig hiddenNotInstallPlatforms:@[UMSh ...

  3. 后台弹出界面权限 绕过_教您如何发微信「朋友圈」,设置访问权限

    引言 我们经常在微信的朋友圈中看到朋友们分享的动态,我们也可以将我们的美好瞬间记录在朋友圈,与亲朋好友共同分享. 发送朋友圈的步骤 1.打开微信,点击底部的[发现],进入界面后点击[朋友圈],可以看到 ...

  4. 微信隐藏功能系列3:微信关闭朋友圈广告推送

    我们使用微信好多年了,这个工具不仅仅在社交上为我们带来许多好处,工作.消费中也是给我们带来不少方便之处,大家对微信隐藏功能了解多少?本期分享:微信关闭朋友圈广告推送! 虽然微信为我们带来许多方便,但令 ...

  5. 一键清空朋友圈软件_微信清理朋友圈app下载-微信清理朋友圈下载v1.8.0 安卓版-西西软件下载...

    微信清理朋友圈app一款强大的微信清理工具,当你想要重置自己的微信号并删除所有的内容之时,又觉得一条条删太麻烦了,就可以用到这款神器工具,可以帮助你一键删除掉朋友圈内的所有内容,帮助你轻松的重置微信号 ...

  6. 企业微信和个人微信在朋友圈上有何区别?

    企业微信的朋友圈和个人微信的朋友圈有何区别?各有什么优势呢?企业微信的朋友圈怎么运营才能获得更好的效果呢? 随着腾讯在企业微信的不断发力,企业微信中也提供了朋友圈功能,可以帮助我们进行企业微信营销,那 ...

  7. 友盟社会化分享之自定义内容分享到微信,微博,豆瓣

    以前移动端要做分享的时候一般是两种方法,要么使用Intent调用安卓系统自带的分享功能接口,这是最简单快捷的方法, 要么就自己去QQ微信和各个微博等社交网站申请开发者ID和key,然后在看他们的官方文 ...

  8. 使用友盟社会化分享IOS版SDK分享纯图片到微信

    本文和上一篇友盟社会化分享Android版是兄弟篇.其实本人用的是友盟Cocos2d-x的IOS版.对于普通IOS版如何分享纯图片到微信朋友圈,官网文档中已经说明的比较清楚,但是在Cocos2d-x版 ...

  9. 微信 支付宝支付 友盟登录分享 统计

    概述 GZPayAndShareDemo主要集成了支付宝 微信 支付功能,友盟社会化分享 统计!从此支付 分享 统计 不再是梦! 详细 代码下载:http://www.demodashi.com/de ...

最新文章

  1. Suring开发集成部署时问题记录
  2. Python读写json文件中文编码问题
  3. 结果集(ResultSet)用法
  4. 内容组织高效项目方案是如何产生的 !
  5. IaaS、PaaS和SaaS 公司都做些什么
  6. Tomcat 在mac上(Idea)端口冲突解决办法
  7. linux里的vmware16有中文吗,vmware 16.1专业版_linux版本下载_vmware 16.1下载_5分享
  8. 文言文能编程了,是噱头还是突破?
  9. 经典手眼标定算法之Tsai-Lenz的OpenCV实现
  10. 在RobotFramework--RIDE中把日期转化为整型进行运算
  11. 将SpringBoot项目打包并部署到服务器
  12. 学习某一门技术的步骤(韩顺平老师提供)
  13. Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用
  14. Windows环境下安装Oracle11g客户端
  15. MySQL千万级数据处理
  16. 一曲微茫度余生 ——川剧《李亚仙》唱响香港西九戏曲中心
  17. 平安京s9服务器维护,决战平安京S9赛季对局环境调整计划公布 S9麒麟刷新机制等调整预告[多图]...
  18. 时间、日期的一些用法
  19. .NET开发工程师方向
  20. Java中的向上转型及向下转型

热门文章

  1. Android之二维码扫描和生成
  2. rabbitmq安装包部署erlang环境安装
  3. 2021金三最新自动化测试面试题合集(含答案)!
  4. 图文摘要(graphical abstract)与学术海报(academic poster)的区别是什么?
  5. matlab电子双缝衍射,Matlab在《原子物理学》教学中的应用——以电子双缝衍射实验为例...
  6. Python 读书笔记3 Probabilistic Graphical Models -1
  7. 第01章 Windows下搭建Python集成开发环境
  8. mysql wm concat_wm_concat 多行字符串拼接(示例代码)
  9. Unity连接SQL Server数据库
  10. 设计模式之外观模式详解(附应用举例实现)