额,这篇文章纯粹记录开发中遇到的问题或者接触到的比较新鲜的事情。再有就是一些神奇的解决方案。
要诚心诚意的致敬现在的老大,虽然平时不上手代码也不太会底层实现(因为没见过),但是想法总是络绎不绝,思路总是思如泉涌。
接下来记录一些工作中遇到的一些事,以后用得到当例子,以后用不到当开拓眼界了吧。其实也不都是java方便的知识,更多的是位置的设置,配置之类的。
1.app实现后台进程不被杀死:
这个起因我们项目有个轨迹追踪的功能,但是又害怕司机后台运行程序一段时间会被杀死,导致追踪也停止。所以老大给出的建议:两个后台音乐播放(实际上没声音)的线程,并且做到互相拉起(其中一个死了另一个会拉起这个)。最大程度保证app后台存活性。
2.苹果系统手续费问题:
因为很少做app,近段日子感觉接触到的都是新知识。据说苹果app中充值,官方收取30%手续费!这个数据过分了有木有?然后我们老大给出的方法:有个全局状态,在苹果审核期所有充值页面都屏蔽,待审核完毕后再放开充值,这样一个绕开苹果的过程可以大大降低平台的成本。(我不知道是否涉及擦边,如有望提醒下)
3.app版本更换问题:
经常性的app版本要迭代。以前我接触到的方法就是打个apk包,然后替换。但是这次要做到的是后台上传apk文件,然后自动更换apk。
别管为什么这么实现了,反正是要这么做,然后一开始的思路是用配置文件,上传文件后修改配置文件的版本号,同时将新apk文件替换老文件,老文件更名为XX+版本号.apk。
结果后来在实现的过程中发现文件的配置文件修改问题,就是只第一次读取配置文件,后来的每次读还是最初的值,哪怕改了也是一样。也可能是我太菜没研究明白,这是个小遗憾。
反正就是出于不耽误时间的原因立刻就换了个思路,选择用数据库来直接控制修改版本。
这里简单的说一下我的思路与实现,为了以后遇到类似的问题有个现成的想法,同时如果能帮助到同样遇到这种问题的人就再好不过了:
-
第一步,创建一个记录表。我因为着急并且不好说出口的目的,所以只创建了一个最简版本:
版本控制表
没有主键,没有时间,简简单单就这么两个字段,type写了注释:0是车队版本,1是司机版本。(apk版本分这两个版)
反正对付用了。然后在代码中显示最新版就是select 版本 from 表 where type=? order by version desc limit 1.这样查询出来的就是最新版的版本号(因为版本只能往上升不能下降)。
同样上传文件也是类似的原理,旧版本的文件重命名成名+旧版本+.apk。新版本的命名名字.apk。就这样完成一个版本更换。
java代码如图:
@Override
public R editDrvierApk(MultipartFile file,double version) {
double version = versionDao.selectNew(1).getVersion();
File file1 = new File("D:\\Program Files (x86)\\nginx-1.16.0\\download\\driverApp.apk");
// 判断该文件是否存在
if (file1.exists()) {
File newfile = new File("D:\\Program Files (x86)\\nginx-1.16.0\\download\\driverApp(" + version + ").apk");
// 重命名该文件
file1.renameTo(newfile);
}
File dest = new File("D:\\Program Files (x86)\\nginx-1.16.0\\download\\driverApp.apk");
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest); // 保存文件
VersionEntity versionEntity = new VersionEntity();
versionEntity.setType(1);
versionEntity.setVersion(version);
versionDao.insert(versionEntity);
return R.ok();
} catch (Exception e) {
e.printStackTrace();
return R.error();
}
}
这其实存储路径还有apk名字都是自定义,可改,dao层也是自定义,type也是。反正都是活的,我这里只是表达下逻辑。
反正是先更改apk,然后更改数据库中的最新版本号。然后这个操作就完成了。
未完待续,我会随时遇到问题随时补充。
网友评论