Страница 3 из 4

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 21 янв 2014, 17:40
vadlm
onRetainNonConfigurationInstance
getLastNonConfigurationInstance

про эти методы документация пишет - This method was deprecated in API level 13.
Use the new Fragment API setRetainInstance(boolean) instead; this is also available on older platforms through the Android compatibility package.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 22 янв 2014, 13:26
KamiSempai
Все правильно, эти методы устарели после появления фрагментов.
Вообще много чего устарело после выхода фрагментов.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 24 янв 2014, 14:56
apollox
Еще такой вопрос, я тестирую на телефоне с Android 2.2 и на планшете с 4.0.3
Задача, чтобы если размер картинки меньше размера экрана (в пикселах), то картинка показывается как есть.
А если больше размера экрана, то масштабируется по ширине экрана.
На планшете все работает, при повороте экрана картинка масштабируется по ширине экрана.
А вот на телефоне с 2.2 получается так: при портретной ориентации, картинка по ширине экрана, а при повороте на альбомную, почему-то свой размер не меняет и не растягивается по ширине...

Код такой:

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
		<WebView
			 android:id="@+id/webView"
			 android:layout_width="fill_parent"
			 android:layout_height="fill_parent">
		</WebView>
</LinearLayout>

Код: Выделить всё

public class MainActivity extends Activity {
	
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   
    WebView webView = (WebView) findViewById(R.id.webView);
	webView.loadUrl("http://www.atorus.ru/public/ator/data/photos/b45479-5.jpg");
	webView.setInitialScale(1);
	webView.getSettings().setLoadWithOverviewMode(true);
	webView.getSettings().setUseWideViewPort(true);
  
  }
}
В манифесте:

Код: Выделить всё

        <activity
            ...
            android:configChanges="orientation|screenSize"
    		android:windowSoftInputMode="adjustResize"
    		android:hardwareAccelerated="false">
При повороте экрана картинка не растягивается:

Подскажите пожалуйста, что не так...

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 28 янв 2014, 13:57
Pavel A
Pavel A писал(а):
rezak90 писал(а):
Fry писал(а):А что - методы onRestoreInstanceState /onSaveInstanceState хранят данные не в памяти?
да, но статика то будет жить всегда, даже если мы уже на другой активити, а всё что было в бандле умрёт с активити
Хотелось бы уточнить , данные в SaveInstanceState точно уничтожается вместе а активити ?
от переизбытка ответов отвечу тогда сам себе 8-)

bundle SaveInstanceState сохраняется в специальной области Activity Record , которая , хотя и связана с той активити в которой создана , но имеет собственный цикл жизни .
Запись в Activity Record будет уничтожена если :
1. Пользователь явно нажал кнопку Back , то есть активити закрывается и соответственно промежуточные результаты хранить больше нет необходимости
2. Устройство было перезагружено
3. Прошло достаточно долго времени , в течении которого к записи в Activity Record не обращались .

в остальных случаях запись будет храниться , даже если активити , в которой она создана будет уничтожена , что на практике значит , что хранить промежуточное состояние в bundle в достаточной степени надежно. Спасибо всем кто участвовал.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 29 янв 2014, 19:04
w201
А у меня вопрос на засыпку
Допустим есть два активити из первого во второй передаем в extras какие-то значения, которые вычитываем затем в активити2 в oncreate.
Вопрос - что происходит с extas когда мы повернем активити 2?

Тончее я знаю, что extras сохраняются, но всегда ли это так и есть ли исключения я не смог.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 14 фев 2014, 14:46
argamidon
У меня два вопроса.
1) почему при обычном сворачивании (кнопка home) вызывается метод onSaveInstanceState();
2) куда уходят эти данные? дело в том что если просто свернуть программу, по непонятной причине вызывается метод onSaveInstanceState, при повторном выдвижении свернутой Activity на передний план метод onCreate естественно не вызывается , метод onResoteInstanceState тоже не вызывается (и не должен). так куда идут данные при сворачивании программы и для чего вызов onSaveInstanceState при сворачивании?

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 14 фев 2014, 15:37
Foenix
все написано в библии
http://developer.android.com/reference/ ... os.Bundle)
вообще.. я бы не рассчитывала на этот метод особо..

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 14 фев 2014, 15:43
argamidon
я чтитал это . спасибо. там написано что вызывается для activity которая может быть уничтожена. это и есть оно?

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 20 мар 2014, 17:16
n0tb0dy
Добрый день!

у меня почему то вообще не срабатывает метод onRestoreInstanceState

делаю так

Код: Выделить всё

@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
	    super.onRestoreInstanceState(savedInstanceState);
	    Log.d(TAG, "onRestoreInstanceState A");
	  }
нажимаю кнопку Home, возвращаюсь обратно в приложение, и ни чего в логах, запускаю дургую Активность из этой возвращаюсь обратно и опять ни чего в логах :(

чего делаю не так?

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 25 мар 2014, 05:46
Тарас
Здравствуйте, а где можно достать остальные видео уроки? А то на ютубе последний урок 63. по видео урокам быстрее запоминается и лучше понимается))

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 02 апр 2014, 09:08
damager82
Тарас писал(а):Здравствуйте, а где можно достать остальные видео уроки? А то на ютубе последний урок 63. по видео урокам быстрее запоминается и лучше понимается))
Видеоуроки есть только те, что на youtube. Остальные просто не созданы еще.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 02 апр 2014, 13:25
n0tb0dy
argamidon писал(а): 2) куда уходят эти данные? дело в том что если просто свернуть программу, по непонятной причине вызывается метод onSaveInstanceState, при повторном выдвижении свернутой Activity на передний план метод onCreate естественно не вызывается , метод onResoteInstanceState тоже не вызывается (и не должен). так куда идут данные при сворачивании программы и для чего вызов onSaveInstanceState при сворачивании?
мне вот тоже не понятно, куда сохраняются эти данные

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

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 02 апр 2014, 13:37
n0tb0dy
Отображение вызова метода onRestoreInstanceState просто НЕ ПОКАЗЫВАЛОСЬ в эмуляторе AVD Android 2.3.3

таки эмулятор AVD Android 2.3.3 глюкавый аднака

Когда запустил ту же прогу на Genymotion все стало отображаться нормально.

Но вопросы остаются... куда уходят данные? и как их можно подхватить из сохраненного состояния когда активность была уничтожена?

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 24 апр 2014, 22:23
aleksbim
Помогите пжл понять механизм кода урока . Почему срабатывают все эти методы за пределами скобок onCreate?

public void onCreate(Bundle savedInstanceState) {
Ведь отсюда эти методы никто не вызывал!
}

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 25 апр 2014, 03:10
klblk
а то что метод onCreate тоже никто не вызывал вас не смутило?)
с такими вопросами в исходники нужно смотреть:
http://grepcode.com/file/repository.gre ... .Intent%29

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 10 май 2014, 21:57
fedor77
Всем привет. Все прочитал, но прям тупик!
Есть активити a1 и a2. Из a1 перехожу в a2 через - у a1 onPause, onSaveInstanceState, onStop.
В a2 нажимаю назад для перехода в a1. У a1 - onDestroy, onCreate, onResume.
Нет восстановления!!! В хелпе читал, что даже текст в EditText восстанавливается автоматически. Вообще ничего не происходит.
Почему не вызывается onRestoreInstanceState?
Заранее спасибо)

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 12 май 2014, 06:49
klblk
fedor77 писал(а):Всем привет. Все прочитал, но прям тупик!
Есть активити a1 и a2. Из a1 перехожу в a2 через - у a1 onPause, onSaveInstanceState, onStop.
В a2 нажимаю назад для перехода в a1. У a1 - onDestroy, onCreate, onResume.
Нет восстановления!!! В хелпе читал, что даже текст в EditText восстанавливается автоматически. Вообще ничего не происходит.
Почему не вызывается onRestoreInstanceState?
Заранее спасибо)
что-то с кодом не так... onDestroy быть не должно.

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 12 май 2014, 15:32
fedor77
klblk писал(а):
fedor77 писал(а):Всем привет. Все прочитал, но прям тупик!
Есть активити a1 и a2. Из a1 перехожу в a2 через - у a1 onPause, onSaveInstanceState, onStop.
В a2 нажимаю назад для перехода в a1. У a1 - onDestroy, onCreate, onResume.
Нет восстановления!!! В хелпе читал, что даже текст в EditText восстанавливается автоматически. Вообще ничего не происходит.
Почему не вызывается onRestoreInstanceState?
Заранее спасибо)
что-то с кодом не так... onDestroy быть не должно.
Вроде ничего мудренного)
В a1 - EditText и две кнопки.
Одна кнопка перекидывает на a2. Вот сам код функции.
public void goChat(View view) {
Intent intent = new Intent(this, ChatAtcivity.class);

if (firstCall) {
message = editText.getText().toString();
WorkClass.getInstance().setMessageText(message);

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm");
date = sdf.format(new Date());

intent.putExtra("way", 0);
intent.putExtra("status", "Incomming");
intent.putExtra("message", message);
intent.putExtra("date", date);

connectionState = 1;
} else {
connectionState = 0;
}

startActivity(intent);
}

Остальной код - это то, что создано при генерации нового проекта и функции информирования о состоянии активности.

@Override
protected void onStart() {
super.onStart();
// The activity is about to become visible.
Log.d(TAG, "Main onStart");
}
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now "resumed").
Log.d(TAG, "Main onResume");
}
@Override
protected void onPause() {
super.onPause();
// Another activity is taking focus (this activity is about to be "paused").
Log.d(TAG, "Main onPause");
}
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible (it is now "stopped")
Log.d(TAG, "Main onStop");
}

@Override
protected void onDestroy() {
super.onDestroy();
// The activity is about to be destroyed.
Log.d(TAG, "Main onDestroy");
}

protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("firstCall", firstCall);
Log.d(TAG, "onSaveInstanceState");
}

protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
firstCall = savedInstanceState.getBoolean("first_call");
Log.d(TAG, "onRestoreInstanceState");
}

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 03 июн 2014, 22:23
AlexVinn
Инициализируются 3 таба так вот (код). Подскажите, как сохранить на них ссылки
и потом обрабно достать при поворотах экрана ?

Tab1 -

public class Tab1 extends Fragment {
...
}

Хелп, плз. Спасибо.

[syntax=java5]
private void setupTabs() {
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);

Tab tab1 = actionBar
.newTab()
.setText("Tab1")

.setTag("Tab1")
.setTabListener(
new SupportFragmentTabListener<Tab1>(R.id.flContainer,
this, "Tab1", Tab1.class));

actionBar.addTab(tab1);
actionBar.selectTab(tab1);
...
}
[/syntax]

Re: Урок 70. onSaveInstanceState. Сохранение данных Activity

Добавлено: 13 сен 2014, 13:40
nazar_developer
а гдето есть статя как можно управлять поворачиванием, напирмер если мне нужно чтоб било тольок в горизонтальном положении?