В моем приложении я хочу проверить номер версии с сервера, и когда этот versionName> myVersionName покажет dialog
.
verionName поступает с сервера как "version": "1.0.0.1"
, а myVersionName как 1.0.0.2
.
Я хочу этого, когда 1.0.0.1> 1.0.0.2 показывает dialog
.
Но это verionNames - это Струны. как это проверить в Нить?
Помогите, пожалуйста
String.compareTo()
сравнивает в лексикографическом порядке, который должен отлично работать с вашими номерами версий. Обратите внимание, что он работает с текущими простыми номерами версий, нет гарантий, что он будет работать при изменении версий, например, 10.0.0.1 или 1.0.0.1.1.
как сервер versionName
может быть меньше app'sversionname
? даже если это так ... вам нужно обновить имя версии сервера? сразу после релиза!
@ Бен, можешь отправить мне код, мой друг? потому что я любитель и очень нуждаюсь в вашей помощи. пожалуйста
@Ben, пока не воспользуетесь "1.0.01.3".compareTo("1.0.1.2")
. Это будет проблемой. (Странные обозначения, но где-то видел ... не помню где)
@AxelH да. Это работает, только если версии лексикографически сопоставимы. Но если они есть, это быстрое решение. Определенно не то, на что я бы поставил благополучие своего кода.
Я согласен с @Ben, мы могли бы легко использовать регулярное выражение, чтобы сначала очистить эту нотацию и сохранить использование Comparable.
Я написал ответ с быстрым классом, чтобы использовать эту логику. Это должно быть достаточно эффективным в большинстве случаев.
посмотрите здесь -> stackoverflow.com/questions/198431/…