にビットマップをロードする単純なアクティビティがあります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 はアプリケーションの存続期間中に一度呼び出される必要があります。私はこれについて間違っていますか?デバイスの向きを変えると、どのようにアクティビティが再作成される可能性がありますか?