2015-08-27 3 views
0

Я хочу использовать recreate() для возобновления моей деятельности, но я не хочу, чтобы он выполнял onSaveInstanceState(). Итак, это действительно так, запуская новую деятельность.Как вы воссоздаете деятельность внутри себя, не сохраняя ее экземпляр?

На this странице, ответ говорит, что:

Поскольку уровень API 11 (Honeycomb), вы можете вызвать метод Recreate() активности (благодаря этому ответу).

Метод recreate() действует точно так же, как изменение конфигурации, поэтому вы также вызывают методы onSaveInstanceState() и onRestoreInstanceState(), если это применимо.

Есть ли другой способ возобновить деятельность внутри себя, не вызывая onSaveInstanceState()? Если вы считаете эту плохую практику, что, по-вашему, мне следует делать?

+0

Я думал о присвоении моим переменным их «нетронутых» или немытых значений. Просто я колебался, потому что я все равно хочу посмотреть, есть ли способ сделать это более аккуратно. –

ответ

0

посмотреть here.

onSavedIstanceState и onRestoreInstanceState всегда называются, но если вы не реализуете их, они воссоздают приложение, не делая ничего :)

EDIT: Вы можете добавить новое сохранить в них, как внутр.

при перезагрузке, но вы не хотите восстановить что-либо, вы установите это значение, например, на 1. при перезагрузке, и вы хотите, чтобы сохранить его установить его, например, на 0.

чем в onRestoreIstanceState вы проверяете это значение, и если оно равно 1, вы не вызываете никаких переадресационных вызовов, если это 0, вы их вызываете :)

+0

Действительно, но я должен использовать их. :( –

+0

@IReallyWantToStayAnonymous Я отредактировал, скажите мне, нормально ли это сейчас! :) –

+0

Спасибо. Я думаю, что я понимаю суть того, что вы говорите. У меня есть метод 'restore()', который получает значение из 'savedInstanceState', полученного в методе' onCreate() '. –

0

Это может быть не очень хорошо, но способ, которым я занимаюсь, заключается в повторном использовании намерения, которое начинает действие. Определите намерение намерениеOLD в методе onCreate и используйте aimOLD = getIntent() для извлечения намерения, которое запускает это действие. Затем, когда вы хотите перезапустить активность, вызовите finish(); startActivity (intentOLD);

+0

О, спасибо. Я думаю, что это будет лучше для возврата к определенному экземпляру. –