小程序"开发环境"与"生产环境" App onLauch 生命周期表现不一致
发布于 4 年前 作者 kqin 13465 次浏览 来自 官方Issues

在"开发环境中"打包测试,通过小程序二维码进入方式(1011, 1012, 1013 场景值) 和 右上角重新进入小程序都会触发 App onLauch 生命周期,在"生产环境"时,只有第 1 次通过二维码进入(1011, 1012, 1013 场景值) 和 右上角重新进入小程序会触发 App onLauch,第 2 次以及以后通过二维码则不会触发 App onLauch 生命周期,系统信息以及基础库版本见截图

2 回复

经过大量测试发现(以下的测试场景,源代码和测试操作完全统一)

一、Android、IOS 在测试包 与 线上包在在"通过二维码进入"方式对管理应用生命的差异性

只有 IOS 开发包在"通过二维码进入"、“右上角重新启动” 都会重启整个应用(即 App onLauch 触发)

Android 测试包、生产包,IOS 生产包在"通过二维码进入"时,冷启动当然会触发 App onLauch,只要应用被实例化了后,再次进入只会触发 App onShow

问题主要存在于 IOS 开发包上,因为这个问题导致 IOS 开发包上测试不出来应用一些相应的使用逻辑场景

二、启动参数的差异性

Android 开发包 无论第1次"通过二维码进入"(App onLauch 触发) 还是第2次及之后"通过二维码进入"(App onShow 触发),都可以在 onShow 阶段获取启动参数,使用右上角重启应用依然可以获取启动参数,onShow 阶段获取参数场景,在退出应用后不能再次获取即正常。

Android 生产包 第1次"通过二维码方式进入"(无论是冷启动还是热启动)可以在 onShow 阶段获取启动参数,使用右上角重启应用则就无法获取启动参数

IOS 开发、生产包只要"通过二维码进入"(无论是冷启动还是热启动)都可以右上角重启应用后在 onShow 获取到启动参数,onShow 阶段获取参数场景,在退出应用后不能再次获取即正常

主要是期望在开发、生产环境中同样的操作要保持结果一致性,否则在开发过程中根本不易调试,从而导致需要大量的测试

扫码后打开小程序第一次会触发 onLaunch,第二次因为小程序已经实例化了,所以只会触发 onShow,所以你可以在 onShow 和 onLaunch 分别做一些逻辑。

回到顶部