我有一个简单的活动,可以在onCreate
. 我发现如果我旋转设备,我可以从onCreate
再次调用的日志中看到。事实上,因为所有实例变量都再次设置为默认值,所以我知道整个 Activity 已经被重新实例化了。
旋转 2 次后,我得到一个 FC,因为无法为位图分配足够的内存。(活动的所有实例都还在某处吗?还是 GC 清理得不够快?)
@Override
public void onCreate(Bundle savedInstanceState) {
File externalStorageDir = Environment.getExternalStorageDirectory();
File picturesDir = new File(externalStorageDir, "DCIM/Camera");
File[] files = picturesDir.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".jpg");
}});
if (files.length > 0) {
Bitmap bm = BitmapFactory.decodeStream(new FileInputStream(files[0]));
ImageView view = (ImageView) findViewById(R.id.photo);
view.setImageBitmap(bm);
}
}
从我阅读的所有内容来看,onCreate 应该在应用程序的生命周期内调用一次。我错了吗?重新定向设备如何导致重新创建活动?