seedhartha / QuestPlayer

Android port of Quest Soft Player
http://qsp.su/
26 stars 5 forks source link

При запуске третьей и/или последующей игр иногда запускается вторая. #33

Open AlexandrKozlovskiy opened 1 year ago

AlexandrKozlovskiy commented 1 year ago

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

steps to reproduce

  1. Откройте questplayer и запустите игру !осколки бессмертия.
  2. Закройте игру и,не выходя из приложения,запустите игру 13-я школа.
  3. Закройте игру и,не выходя из приложения,снова запустите игру !осколки бессмертия (названия игр написаны приблизительно).
  4. Убедитесь,что отображается текст из игры 13-я школа.

Причина проблемы

Дело в том,что мы инициализируем библиотеку в отдельном потоке в классе LibQspProxyImpl,а запускаем игру,используя методы этого же класса,в главном потоке. В результате иногда происходит так,что в главном потоке код выполняется быстрее,чем в потоке,инициализирующем библиотекут.е происходит разсинхронизация потоков. Я пытался обернуть код до запуска потока в synchronized(this),но это ничего,или почти ничего,не дало. Поскольку на сайте qsp.su ввели защиту от ботов и домен qsp.su не будет работать,api поменяло адрес. Также я исправил креш плеера при распаковке игры депрессия. Поскольку я делал это одним коммитом,в котором,на мой взгляд,очень мало изменений,я не создавал pr. Вы можете смержить мой коммит с https://github.com/AlexandrKozlovskiy/questPlayer/tree/dev (самый последний коммит),а после чего исправлять баг.