我正在使用 Activity Result API 从图库中获取多个内容(因为不推荐使用 startActivityForResult())。
MainActivity.java
LinearLayout ll;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
ll = (Button) findViewById(R.id.ll);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchImage.launch("image/*");
}
});
}
ActivityResultLauncher<String> launchImage= registerForActivityResult(
new ActivityResultContracts.GetMultipleContents(),
new ActivityResultCallback<List<Uri>>() {
@Override
public void onActivityResult(List<Uri> uri) {
try {
for (int i = 0; i < uri.size(); i++) {
ImageView imageView = new ImageView(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(600,800);
lp.setMargins(0, 50, 0, 0);
imageView.setLayoutParams(lp);
imageView.setImageURI(uri.get(i));
ll.addView(imageView);
}
}
catch (NullPointerException e) {
e.printStackTrace();
}
}
});
问题是当添加太多图像时,我的应用程序崩溃并显示 OutOfMemoryError。我相信问题在于这些图像的文件大小。
如何减小此 ActivityResult API 上的图像大小?
任何帮助,将不胜感激。
提前致谢。
来自 LogCat 的错误:java.lang.OutOfMemoryError:无法分配 38937612 字节分配,16772728 个可用字节和 19MB 直到 OOM