У меня есть приложение для Android. Я добавил фильтр намерений в один из моих действий, так что, если URL-адрес щелчка в приложении-браузере, моя деятельность может быть запущена. Мне нравится примерно:Нарушение барьера задачи
<data android:host="www.mysite.com" android:scheme="http"></data>
это хорошо работает. Проблема в том, что каждый раз, когда моя активность запускается из браузера, создается новый экземпляр действия в задаче браузера, вместо того, чтобы повторно использовать любой существующий экземпляр, который может быть уже в системе.
Это проблема для меня, потому что в этом упражнении используется одноэлемент. Если я разрешаю существование более одного экземпляра этого действия, я могу попасть в некоторые странные ситуации, когда два экземпляра находятся в конфликте, когда они пытаются поделиться одним синглтоном. Я проверил и вижу, что хотя экземпляры активности могут быть в отдельных задачах, они используют один и тот же экземпляр singleton.
Идеальное решение для меня было бы, если бы я мог каким-то образом довести существующий экземпляр моего приложения на переднем плане и запустить или возобновить целевую активность в любом существующем экземпляре моего приложения.
Так что я попытался это:
- Регистрация выше фильтра, чтобы указать на фиктивную деятельность, которая является просто зрелищем.
- Dummy activity создает намерение трансляции и пытается передать сообщение «создать меня» в систему.
- Реальная целевая активность предназначена для прослушивания этого широковещательного сообщения. Надеюсь, если в системе уже есть экземпляр активности, он выйдет на передний план. Если еще нет экземпляра, это нормально, разрешите создание в задаче браузера.
Не уверен, что это имеет смысл. Моя основная цель - ограничить активность одним экземпляром в системе. Приложение - это приложение для социальных сетей, в котором есть состояние входа в систему, которое необходимо сохранить. Описанный выше singleton сохраняет это состояние входа, поэтому я хочу иметь только один элемент в системе, вместо того чтобы разрешать несколько экземпляров входа, которые будут головной болью для пользователя.
Благодаря
Привет sadboy, я поставил launchMode в SingleTop, но до сих пор никакого эффекта. Я могу напечатать адрес mem-активности и увидеть, что каждый раз, когда браузер запускает новый экземпляр, это другой mem-адрес вместо того, чтобы просто возобновлять уже запущенный экземпляр. – user246114
Thats weird. Вы помещаете его в манифест приложения, в котором вы заявляете о своей деятельности? И я предполагаю, что вы пробовали другие режимы запуска, такие как singleinstance? –