第一次遇到JNI ERROR (app bug): local reference table overflow (max=512)

2017-9-14 遇到的一点小问题

.

项目里有用到拍照或相册选取照片后上传到服务端,这个网上一搜很多,就是上传前需要压缩,网上找了些都不是很满意,刚好看到crazycodeboy/TakePhoto,觉得还不错,就一直使用。
这次新项目,又用上了。因为单继承而BaseActivity又有些是需要用的。所以继续是用的组装方式来整合。
用的 compile 'com.jph.takephoto:takephoto_library:4.0.3',结果刚一进Activity就在takePhoto = (TakePhoto) TakePhotoInvocationHandler.of(this).bind(new TakePhotoImpl(this, this));时报错,出现JNI ERROR (app bug): local reference table overflow (max=512)。找了很久,没找到原因,只好试一下继承的方式,通过extends TakePhotoActivity,没想到竟然可以了。只好比对一下相关代码。发现在重写invoke()方法时,我竟然没改,返回的return null;改回TakePhotoActivity里的代码,可以了。。。

@Override
public TPermissionType invoke(InvokeParam invokeParam) {
  TPermissionType type=PermissionManager.checkPermission(TContextWrap.of(this),invokeParam.getMethod());
  if(TPermissionType.WAIT.equals(type)){
    this.invokeParam=invokeParam;
  }
  return type;
}

之前项目用的版本是4.0.0,获取路径只有一个getPath();但现在用的4.0.3版本,去掉了这个方法,改成getCompressPath();//返回压缩后路径getOriginalPath();//返回原始路径
试了一下,getCompressPath();返回的值是空,因为忘了设置压缩了。在getTakePhoto()时加上

CompressConfig config = new CompressConfig.Builder().setMaxSize(409600).create();//压缩最大尺寸
takePhoto.onEnableCompress(config, false);//设置压缩参数及不显示进度

设置后能正常获取压缩后和原始图片路径了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,404评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 之前公司集成环信聊天SDK,在聊天室开发开发过程中历史聊天记录获取卡了一点时间,现在将历史聊天记录的开发方法简单的...
    SmileFans阅读 8,233评论 9 9
  • 经常有人问我,怎么才能知道一个男生真的爱你。 爱是一个循序渐进的过程,不可能突然说爱就爱说不爱就不爱了。一开始与你...
    板娘缇娜阅读 909评论 3 11