StartActivityForResult () возможный сбой? - PullRequest
2 голосов
/ 20 августа 2011

У меня быстрый вопрос. Надеюсь, у кого-то есть быстрый ответ на вопрос: Если вы начинаете действие [A], а затем запускаете действие [B] с помощью startActivityForResult (), есть ли вероятность того, что когда [B] закончил и вернул значение (намерение), что [A] мог быть GC'd, и, таким образом, все падает?

Я где-то читал, что это может произойти, и поэтому вам не следует передавать жизненно важную информацию с помощью Intent.putExtras (), поскольку она может быть потеряна? Вместо этого люди рекомендуют сохранять состояние в sharedPreferences и просто использовать startActivity () при переходе от [A] к [B], а затем снова при переходе от [B] к [A]?

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

Однако, если это возможно, не могли бы вы просто поместить несколько статических ссылок из [A], которые вы используете в [B], и, таким образом, сделать жесткую ссылку, не допуская GC?

Спасибо за любую помощь, ребята!

1 Ответ

3 голосов
/ 20 августа 2011

Если A был уничтожен, он будет воссоздан.Из документации Activity в Android Dev Guide:

Защищенный void onActivityResult (int requestCode, int resultCode, Intent data)

[..] Вы получите этот вызов непосредственно перед onResume () , когда ваша деятельность возобновляется .

Это означает, что действие A будет воссозданообычно (выполнение onCreate (), onStart () и затем onActivityResult (), как описано в жизненный цикл действия ), и результат Intent, заданный вами в действии B., будет передан.

...