Как вернуться к активности где-нибудь в стеке активности? - PullRequest
4 голосов
/ 11 января 2011

Кто-нибудь знает, возможно ли удаление активности из стека активности, если на устройстве недостаточно памяти?У меня есть действие A, которое вызывает веб-браузер, и веб-страница затем вызывает действие B, которое что-то делает, а затем должно вернуться к действию A. Я использую это намерение с флагами ..

Intent intent = new Intent(this, acticityToReturnTo.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

.., чтобы удалитьдействие веб-браузера и действие B из стека действий и возврат к действию A, но оно не работает.Это всегда новый экземпляр действия A, который создается вместо возобновления к уже существующему действию.Я не хочу использовать флаг единственного экземпляра в действии А, но это единственное решение, которое в настоящее время работает для меня .. (Я разрабатываю для Android 1.6)

Может быть, есть другое решение, чтобы делать то, что я хочу?

Ответы [ 4 ]

2 голосов
/ 11 января 2011

Просто попробуйте использовать

startActivityForResult (намерение);

вместо

startActivity (намерение);

1 голос
/ 11 января 2011

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

Конечно, это будетлучше сделать так, чтобы вы могли вернуться к Деятельности A независимо от того, что вы либо перезапустили его, либо заново создали его с нуля, поскольку нет никакой гарантии, что этого не произойдет.

0 голосов
/ 11 января 2011

Являются ли Browser и Activity A одной и той же задачей? Вы можете проверить это, введя adb shell dumpsys activity в вашей консоли.

0 голосов
/ 11 января 2011

Если навигация всегда A-> B-> A, вы можете просто позвонить finish() для действия B, и он вернется к действию A

...