多个APP合并为一个APP开发的实现方案

需求

目前开发了在线娱乐、收音机、本地音乐三个APP,需要开发一款APP集成这三个模块功能。
具体要求:左侧显示导航栏,包含“在线娱乐”、“收音机”、“本地音乐”按钮,点击可进入相应模块功能。

目前已知有两种实现方案,具体如下


一、方案一——仍然分三个APP开发

三个APP具有布局完全一致的左侧导航栏,点击导航栏完成APP之间的切换。这里通过三个APP来回跳转的方式,实现了让用户看起来是一个APP。其中需要注意:

1.在每个APP中,在BaseActivity中统一显示、控制左侧导航栏。注意每个活动取消切换动画,背景设置为透明色,这样可保证APP之间来回切换时看着像一个APP。

2.多个娱乐类应用在后台时,需要考虑点击图标应该打开哪个应用,需要每个APP都需要通过发送接收广播来记录应该启动哪个APP,这个过程就相当繁琐;

2.灵活度低,如果导航栏需要新增/删除/修改时,需要去三个APP中进行修改。

二、方案二——合并为一个APP开发

按照一般的开发会存在一个问题:如果按照默认活动启动模式,记录三个模块的栈顶Activity,模块A依次打开A1-A2-A3,再点击导航栏按钮模块B依次打开B1-B2-B3,再次点击模块A按钮跳转到A3后,点击返回按钮则会跳转到B3页面而非A2。

1.结合singleTask和taskAffinity实现一个APP中有三个任务栈,使用三个任务栈分别管理相应模块(可避免上述问题);

2.使用MyApplication在活动关闭、打开、退出APP时分别记录三个模块的任务栈列表;

3.存在的问题,由于会创建三个任务栈,所以在创建第二个、第三个任务栈时会出现黑屏现象,目前仍未解决。考虑到手机APP之间跳转貌似没有此现象,应该是能够解决的;

4.后续开发建议可考虑组件化开发,三个功能模块分别为三个模块,这样每个模块可单独运行。

总结

很多车机已经将娱乐类APP融为一个大的APP,大多数车厂的案例也只是左侧导航栏点击控制界面的切换,再点击了导航栏按钮后只有一个页面,不会存在从这个页面切换到下一个页面的情况,即每个模块只有一个页面,这种情况使用fragment就能实现。
参考吉利、领克车型,每个模块会有很多个页面,这个就与我们的需求类似。
参考了手机APP,比如支付宝中嵌套了很多第三方应该,跳转会有一个类似loading的页面后才会跳转到第三方应用,而且支付宝与第三方应用没有共同布局,即类似于我们需求的左侧统一导航栏,查找资料用的可能是插件化技术,故不满足我们的需求。
请教了同行,同行给出了两个解决思路,也即上述的两种方案思路,故按照这两种思路进行了实践有了上述的总结。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值