Приложение с пользовательским изображением не запускается, если его не использовать в течение долгого времени

Имеется приложение с кнопкой "Загрузить", при нажатии на которую, пользователю предлагается выбор картинки из галереи. Картинка устанавливается на фон и подгружается при каждом входе. Это работает, но есть проблема. Если долго не запускать приложение, к примеру, недели 2. То в один момент, при попытке запуска оно просто вылетит и все. Дальше его нужно переустанавливать и загружать в него картинку заново. Мне неизвестен точный срок, после которого появляется данная проблема, но я сам сталкивался с ней 2 раза. Из-за чего это происходит и как можно устранить?

Код:

public class MainActivity extends AppCompatActivity {
    Button open;
    ImageView iv_test;
    SharedPreferences preferences;
    final int SELECT_PHOTO = 1234;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        preferences = getSharedPreferences("APP", Context.MODE_PRIVATE);
        String uriString = preferences.getString("image_uri", "");
        iv_test = (ImageView)findViewById(R.id.imageView);

        if (uriString != null) {
            try {
                iv_test.setImageBitmap(bitmapFromUri(Uri.parse(uriString)));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        open = (Button) findViewById(R.id.opgalbtn);
        open.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                intent.setType("image/*");
                startActivityForResult(intent, SELECT_PHOTO);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == SELECT_PHOTO && resultCode == Activity.RESULT_OK) {
            Uri selected = data.getData();
            iv_test.setImageURI(selected);
            preferences.edit().putString("image_uri", selected.toString()).apply();
        }
    }

    private Bitmap bitmapFromUri(Uri uri) throws IOException {
        ParcelFileDescriptor contentResolver = getContentResolver().openFileDescriptor(uri, "r");
        FileDescriptor fileDescriptorlet = contentResolver.getFileDescriptor();
        Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptorlet);
        contentResolver.close();
        return image;
    }
}

Ответы (0 шт):