Android开发都知道在做微信分享的时候,都需要判断将要展示的图片是否是URL还是Base64的图片资源,前者需要自己去下载一个图片,在转成字节数组的形式;后者可以直接转成字节数组传给微信的参数。
情况一:很多时候我们需要从网上异步下载图片到本地,例如:
之后再转化成字节数组传递给微信的WXMediaMessage。
情况二:如果还有些错误的图片不需要异步线程处理,很快就能有返回。
如果这两种情况,在一起处理,势必就会产生不能准确拿到结果的情况发生,例如:
这样的话,由于异步的网络返回,从网络获取的图片肯定会比从本地获取图片资源要慢,而方法返回肯定会直接去获取bitmap[0]的值,此时如果是第一次点击分享按钮,拿到的值一定是空的。第二次点击就能获取到图片了,但是这不是我们想要的结果,而且也会算作一个bug。so so so 我们需要回调来处理这个问题。
那你会想是不是如下使用回调呢?错误案例如下:
其实这样返回,和之前的返回方法,没有区别。还是没解决,等到网络图片返回之后再返回方法值。
正确的做法,如下:
在使用回调的时候应该这么使用:
其实就是先让方法去做,做完后返回值给我,然后我再在返回的方法中做后面的事情。如果注释了后续代码的那个方块的代码不在这个返回方法中做,还是会发生第一次不能分享出图片,第二次才能使用上一次缓存图片的情况发生。
综上:使用回调的方法可以解决异步返回的问题。