Android ImageView: resolveUri failed on bad bitmap uri

如有错误欢迎指正

        想把网络的图片加载到自己的image view里面,所以用imageView.setImageURI(uri);   但是运行的时候没有加载图片,看logcat发现了标题的报错,上网搜了一下,突然醒悟,Uri本身就有别与URL,Uri是用来加载本地路径的,所以不能用imageView.setImageURI(uri);这个方法

        我们用Android中的一个服务叫 Picasso

        在build:gradle中的dependencies中添加一个依赖

implementation 'com.squareup.picasso:picasso:2.5.2'

然后可以直接在代码中用

//firstUrl 是一个图片的网络地址,second是一个imageview

Picasso.get(context).load(firstUrl).into(second);

        在写的时候遇到一个问题,Picasso爆红,找了好久原因我觉得可能是我先在类中调用了Picasso的方法,后写的依赖。我把Picasso.get(context).load(firstUrl).into(second);删掉重新写了一遍它就不爆红了。。。

        但这可能是运气,你们修改了依赖之后注意编译器有没有提示,点击sync now

         点击之后爆红就消失了

        但是程序运行的时候会报错

         他说我第81行写错了(在排错的过程中我使用了更新版本的picasso,所以这里换了种用法,如果你也要用这个用法,就把依赖中的语句改成implementation 'com.squareup.picasso:picasso:2.71828')

         我们把这个语句写到异步类的另一个函数去

        再次运行,解决

         根据现象总结经验,异步就是为了耗时操作,所以刚才的对json数据的加载和解析看成是一个耗时操作,我们接下来的这个Picasso操作是另一个操作,而这个操作是建立在上一个操作的基础之上的,我们应该保证上一个操作完成之后再做这个操作,如果你把这两个操作都放在doInBackground方法中,就没办法保证他们的同步性,所以AsyncTask给我们提供了几个不同的函数可以控制前后顺序,这个onPostExecute函数就是得等到doInBackground函数执行完毕之后才执行的,所以把Picasso操作写在这个函数之中。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好人不心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值