У меня есть простое действие, которое загружает растровое изображение в onCreate
.Я обнаружил, что, если я поверну устройство, я смогу увидеть из журналов, что onCreate
снова вызвал.Фактически, поскольку все переменные экземпляра снова установлены в значения по умолчанию, я знаю, что вся активность была восстановлена заново.
После двухкратного поворота я получаю 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 должен вызываться один раз за время существования приложения.Я ошибаюсь по этому поводу?Как переориентация устройства может привести к воссозданию активности?