初めて出会ったJNI ERROR(app bug):local reference table overflow(max=512)
1550 ワード
2017-9-14で遭遇したちょっとした問題
.
プロジェクトの中で写真を撮ったり、アルバムを選んだりして、サービス側にアップロードすることができます.このネット上で検索すると、アップロード前に圧縮する必要があります.ネット上でいくつか探しても満足していません.ちょうどcrazycodeboy/TakePhotoを見て、悪くないと思って、ずっと使っています.今度の新しいプロジェクトは、また使いました.単一継承のためBaseActivityは必要なものもあります.だから引き続き組み立て方で統合します.
以前のプロジェクト用バージョンは
設定後、圧縮後と元のピクチャパスが正常に取得されます.
.
プロジェクトの中で写真を撮ったり、アルバムを選んだりして、サービス側にアップロードすることができます.このネット上で検索すると、アップロード前に圧縮する必要があります.ネット上でいくつか探しても満足していません.ちょうど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);//
設定後、圧縮後と元のピクチャパスが正常に取得されます.