我尝试使用图片内容[ onDevice Mode ]来描述一些图片,但它需要太多内存,如果我在同一个应用中尝试了很多图片,那么会崩溃< / strong>即可。
我不知道为什么会发生这种情况,但它总是抛出 OutOfMemoryError 异常。 我的图像大小约为1-2 MB。
当我搜索异常时,我启用了android:largeHeap="true"
,但在2张图片尝试后仍然崩溃。
我还尝试使用System.gc();
从vars中释放内存,但仍占用太多内存。
这是我在onDevice上使用的代码:
in onCreate();
detector = FirebaseVision.getInstance()
.getVisionLabelDetector();
当点击按钮
detector.detectInImage(image)
.addOnSuccessListener(
new OnSuccessListener<List<FirebaseVisionLabel>>() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onSuccess(List<FirebaseVisionLabel> labels) {
Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
setResult(labels, "onDevice Result : ", before);
System.gc();
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
System.out.println("Error: " + e.getMessage());
}
});
任何人都可以帮助我吗?
答案 0 :(得分:0)
我的问题是图像质量太高,没有压缩图像
必须先对图像进行压缩,然后再对其进行初始化处理