Есть ли способ иметь доступ на чтение к стеку истории? - PullRequest
0 голосов
/ 10 мая 2011

Это на самом деле очень простая вещь: мне нужно знать, есть ли МОЯ активность в стеке истории? Я не говорю о других приложениях, просто о моем собственном приложении. И мне даже не нужно знать, кто они или сколько их, мне просто нужно знать, ЕСЛИ ЛИ? Есть ли способ добиться этого? (ActivityManager.getRunningTasks (). TopActivity () не для этой цели.)

(Я реализую функцию перемотки назад / вперед, как это видно во многих браузерах. Сначала я пытался управлять своим собственным стеком истории и вообще не использовать Android. Поэтому я использовал noHistory = true для всех действий в манифесте. Это приводит к проблеме, заключающейся в том, что поведение приложения является странным, когда дело доходит до взаимодействия с другими приложениями или средством запуска. Теперь я попытался использовать стек истории Android для операции Backward, но мой собственный стек для Foreward. Но затем он сталкивается с неожиданной проблемой .... Мало того, в приложении есть соображения безопасности, так что я не могу позволить пользователю вернуться к каким-либо действиям, если файл заблокирован. Мне нужен полный контроль над стеком.

Меня беспокоит модель жизненного цикла Android и стек истории в течение нескольких дней. Чрезвычайно негибкий. Как они могут предположить, что все приложения, все действия в мире ведут себя так, как они представляли в лаборатории !!! ??? Видя множество людей, задающих вопросы в Интернете в этой области, и мне кажется, что все зашли в тупик, а затем попытались найти обходной путь, или компромисс, или могли бы также изменить спецификацию. Android существует уже 3 года, но они все еще не сделали ничего, чтобы сделать его более гибким. Я предполагаю, что это должно быть очень фундаментальным в дизайне с первого дня, чтобы они знали о проблеме, но ничего не могли с этим поделать Назовите это неправильным дизайном.)

(И это неблокирующие, несинхронизированные диалоговые окна / окна сообщений. Я не знаю, как они придумали этот дизайн. Всякий раз, когда вы хотите, чтобы пользователь что-то подтвердил, вы должны разбить поток программы на несколько частей. Это, несомненно, делает программу трудной для написания и невозможной для обслуживания! Если у вас есть ряд вопросов, один из которых зависит от другого, вы могли бы также упустить конечный автомат.)

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Если вы используете фрагменты в SDK уровня 11 и выше (например, Honeycomb и некоторые уровни Gingerbread), вы можете явно управлять стеком. Для обычной деятельности у вас действительно нет доступа к стеку, так что вам не повезло. Возможно, вы могли бы реализовать личный стек, используя стек уровня приложения: сохраняя Intent s, которые вы используете для запуска действий, чтобы вы могли двигаться вперед, а затем возвращать другое намерение с данными конфигурации для каждого действия (когда каждое действие finish() если вы передаете это состояние при onActivityResult обратном вызове).

Хотя было бы очень грязно.

0 голосов
/ 10 мая 2011

Поскольку вы создаете и завершаете действия, вы должны знать, что находится в стеке во время выполнения. Как правило, вы можете контролировать стек довольно хорошо. Взгляните на ApiDemo, вращающийся вокруг манипулирования стеком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...