찾다

 >  Q&A  >  본문

android - 上传图片步骤中,把选中的图片存本地的方法耗时如何处理?

for (int i=0;i<paths.size();i++) {
        Bitmap bitmap = ImageCompressUtil.compressBySize(paths.get(i), 1000, 1000);
        ImageTools.savePhotoToSDCard(bitmap, Constants.MyAvatarDir, i + "");
        newPaths.add(Constants.MyAvatarDir + i + ".jpg");
    }

代码如上,paths为一个选中图片地址的list,现在我遍历他,进行压缩,以1、2、3数字来命名,并存入本地,在将压缩后的地址存入newpaths中,传入adapter显示。

现在出现了个问题,选中的图片还没来得及存入本地,覆盖原本以1、2、3数字来命名的图片,就传入adapter中,所以显示的图片是上次存的图片。

我的解决方法是延迟500ms后才传入adapter,显然这不是最好的方法,望大神们提供更加完美的解决方案。

天蓬老师天蓬老师2849일 전735

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 15:42:17

    setAdapter 및 informDataSetChanged가 어디에 있는지에 따라 다릅니다. 위의 코드 블록과 다른 스레드에 있는 경우 어댑터 새로 고침 메서드를 호출하기 전에 위의 코드 블록을 실행해야 합니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:42:17

    관찰자 패턴을 사용하고 ImageTools.savePhotoToSDCard 메소드에 리스너를 전달할 수 있습니다.

    으아아아

    그래서 코드를 이렇게 바꿔야 합니다

    으아아아

    물론 setAdapter, adapter.notifyDataSetChanged() 호출 타이밍을 정확하게 처리하는 것이 좋습니다.

    회신하다
    0
  • 취소회신하다