処理JNI ERROR(app bug):accessed stale local reference 0 xbc 00021エラー
最近sdkに接続してjniのエラーが発生し、機種によって必ず現れるタイプのバグではなく、多くの資料を調べたが、問題は解決しなかった.
ネット上で伝えられている説は、androidの4.0バージョン以降、静的変数が解放される可能性があるということですが、これは可能ですが、自分の本物のパッケージに問題が発生するほど頻繁ではありません.
Androidのjava回収については,システムリソースが非常に少ない場合に圧力を減らすために選択的にリソースを解放し,Activityは部下のオブジェクトが回収される可能性があり,リカバリを適用する際にApplicationによってペアを再構築するべきであり,以前のバージョンでは静的変数は回収できなかったが4.0以降のバージョンでは,極端な場合、静的変数が回収されます.
しかし、実際のテストでは、データが解放されてもアプリケーションが回復できない場合、androidシステムの多くは、エラーを回避するためにアプリケーションの再起動を自動的に切り替えるため、静的変数による異常は少ないはずです.
最後に、追跡とログにより、jni(cococos 2 dxでは現在4.0バージョンが使用されている)では、stringパラメータがnil値に入力されると、オブジェクトは野ポインタであるため、場合によってはクラッシュを起こさないため、このような問題を発見するのは難しいことが分かった.
したがって,この問題を解決するには,まず伝達パラメータが正常であるか,タイプが一致しているか,空の値があるかをチェックすることが第一優先であり,jni内部ではこれに対する保護判断が行われていないため,いくつかのつかみにくいバグが生じる.
JNI ERROR (app bug): accessed stale local reference 0xbc00021
ネット上で伝えられている説は、androidの4.0バージョン以降、静的変数が解放される可能性があるということですが、これは可能ですが、自分の本物のパッケージに問題が発生するほど頻繁ではありません.
Androidのjava回収については,システムリソースが非常に少ない場合に圧力を減らすために選択的にリソースを解放し,Activityは部下のオブジェクトが回収される可能性があり,リカバリを適用する際にApplicationによってペアを再構築するべきであり,以前のバージョンでは静的変数は回収できなかったが4.0以降のバージョンでは,極端な場合、静的変数が回収されます.
しかし、実際のテストでは、データが解放されてもアプリケーションが回復できない場合、androidシステムの多くは、エラーを回避するためにアプリケーションの再起動を自動的に切り替えるため、静的変数による異常は少ないはずです.
最後に、追跡とログにより、jni(cococos 2 dxでは現在4.0バージョンが使用されている)では、stringパラメータがnil値に入力されると、オブジェクトは野ポインタであるため、場合によってはクラッシュを起こさないため、このような問題を発見するのは難しいことが分かった.
したがって,この問題を解決するには,まず伝達パラメータが正常であるか,タイプが一致しているか,空の値があるかをチェックすることが第一優先であり,jni内部ではこれに対する保護判断が行われていないため,いくつかのつかみにくいバグが生じる.