java - 使用 compareTo 增加应用程序版本名称
问题描述
我使用一个 android 应用程序(我们可以称之为“AppA”)来更新另一个应用程序(我们可以称之为“AppB”)。应用程序“AppA”检查“AppB”的版本名称,如果它较低,则更新开始。
我使用本机函数“compareTo”检查 versionName。所以这是我的问题:“AppB”版本名称是 9.9,最新版本名称是 9.10,但更新没有开始,因为“compareTo”函数结果是“9.9 > 9.10”。即使我使用像“10.9”或“9.100”这样的新版本名称,9.9 总是更大。
我应该放什么?
解决方案
您可以使用版本名称9.9.1
来更新它,因为"9.9".compareTo("9.9.1") < 0
.
您也可以使用9.90
,9.91
等,因为每个较长的字符串都会更新。
有了新的更新,您应该发布一个新的比较器,查看每个组件,例如:
int[] compOld = new int[3];
String[] split = versionOld.split(".");
for (int i = 0; i < split.length; i++)
compOld = Integer.parseInt(split[i]);
int[] compNew = new int[3]
...
return compOld[0] < compNew[0] || compOld[1] < compNew[1] || compOld[2] < compNew[2];
或者查看用于语义版本控制的库。
推荐阅读
- reactjs - React 创建永远不会重建的自定义 Hook
- php - 使用 SimpleHtmlDom 从脚本标签的出现中解析 JSON 数据 - PHP
- amazon-web-services - AWS EC2 更改公共 DNS 主机名,以便它与反向 DNS 查找一起使用
- javascript - Javascript如何将新元素从初始数组推送到相同索引的数组数组中的每个数组?
- python - 如何根据具有连续属性值对对象(元组)进行分组?
- excel - 将宏按钮复制粘贴到不同的工作表时宏不起作用
- django - 如何暂时禁用 Django 索引(用于 SQLite)
- python - 仅在需要时链接方法
- postgresql - Postgres,如何迭代访问数据库中的所有表,子查询?
- docker - Kubernetes 描述 pod - 来自服务器的错误 (NotFound)