Мне сложно работать с ориентацией экрана на Android. У меня есть активность, которая фиксирует подпись после того, как пользователь нарисовал свою подпись на устройстве. И для этого действия я передаю разреженный объект, и я получаю его в oncreate. Когда активность меняет ориентацию, иногда активность не может получить разрешаемый объект и дает исключение. Я пробовал использовать статический объект для объекта-патчи, но не использовал его. Я попробовал метод statesanceinstance state и методы onRetainNonConfigurationInstance.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signature_capture_view);
Bundle bundle = getIntent().getExtras();
info = bundle.getParcelable("info");
logo= (Bitmap) bundle.get("logo");
}
И мой метод состояния экземпляра save выглядит следующим образом:
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putParcelable("info", info);
super.onSaveInstanceState(outState);
}
В результате изменения метода onconfiguration я вызываю метод setcontentview для установки нового макета.
@Override
public void onConfigurationChanged(Configuration newConfig) {
setContentView(R.layout.signature_capture_view);
super.onConfigurationChanged(newConfig);
}
Иногда, когда ориентация изменяется, исключение из памяти происходит из метода setcontentview.
Любая помощь будет принята с благодарностью. Заранее спасибо.
Наконец-то я нашел ответ на свой недостающий объем памяти. В моем представлении графического чертежа я не проверял растровое изображение в представлении для нуля, и каждый раз, когда устройство меняет ориентацию, он создает растровое изображение внутри представления. И он генерирует OOM. Таким образом, я вставил нулевую проверку для растрового изображения, и ядро исчезло. Спасибо за быстрые ответы ребята.
Попробуйте установить атрибуты android: configChanges в файле AndroidManifest.xml:
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
И если вы хотите, чтобы ваше приложение было исправлено, чтобы открыть его в портретном или в ландшафтном режиме, добавьте android: screenOrientation внутри тега активности:
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait">
если вы меняете представление в альбомной ориентации/портрет, вы должны выполнить следующие шаги, чтобы устранить ошибку в памяти.
андроид: configChanges = "ориентация"
public void onConfigurationChanged (Конфигурация newConfig) {
super.onConfigurationChanged(newConfig);
this.recreate();
}
Попробуйте установить это в манифесте тега активности для ошибки из памяти:
android:configChanges="orientation"