美文网首页java学习之路
java开发app后台杂记

java开发app后台杂记

作者: 唯有努力不欺人丶 | 来源:发表于2019-10-24 10:04 被阅读0次

    额,这篇文章纯粹记录开发中遇到的问题或者接触到的比较新鲜的事情。再有就是一些神奇的解决方案。
    要诚心诚意的致敬现在的老大,虽然平时不上手代码也不太会底层实现(因为没见过),但是想法总是络绎不绝,思路总是思如泉涌。
    接下来记录一些工作中遇到的一些事,以后用得到当例子,以后用不到当开拓眼界了吧。其实也不都是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,然后更改数据库中的最新版本号。然后这个操作就完成了。
    未完待续,我会随时遇到问题随时补充。

    相关文章

      网友评论

        本文标题:java开发app后台杂记

        本文链接:https://www.haomeiwen.com/subject/jmjhvctx.html