小程序切到后台通过搜索或者扫码重新进入时会重新从defalut页面加载进入,会重新触发default页面的onload事件,default页面的onload事件中也可以拿到启动参数options(Page页面的onlaod事件是可以拿到路由跳转过来携带的参数,小程序启动时默认进入default页面可以认为是一种路由)。
app.js先执行生命周期,app.js的生命周期中的同步代码执行完毕之后会执行default页面的生命周期,如果app.js中异步代码,那么不会等待异步代码,会继续执行同步代码,同步代码执行完毕后执行default页面生命周期中的的同步代码,等所有同步代码执行完毕之后才会执行异步代码。小程序第一次启动时默认进入default页面,这时如果appjs中即使有路由跳转到其他非default页面,那么虽然小程序会跳转到其他页面,但是default页面中的代码还是会执行的,只有default页面中的代码执行完毕之后才会执行路由跳转页面的js代码。小程序中的路由跳转不能阻断路由跳转后面的代码的执行,即使某一行写了路由跳转,那么路由跳转下一行的代码还是会执行的。如果不想执行就在路由跳转后边写一个return.
a. 小程序从最近使用中 进入时,默认如果小程序没有卸载的话会直接进入之前已经打开的页面,如果已经卸载的话会重新进入default页面,如果小程序没有卸载或者销毁的话,小程序进入之前的页面时不会触发页面的onload事件。
b. 小程序切出去后不从最近使用中进入而是再次通过比如扫码,搜索、发现等,如果码中带有参数路径,那么会进入参数路径中的页面,如果没有参数路径的话默认进入default页面,如:别人分享的页面,那么打开小程序默认路径是会进入到别人分享的页面而不是进入default页面,这些场景进入小程序时都会重新触发default页面或者带有路径的目标页面的onload事件。每次进入时如果小程序没有卸载的话是不会重新触发appjs的onlaunch的,只会每次触发appjs中的onshow。
c. 小程序启动过之后,在没有销毁的情况下,不管再通过其他扫码或者搜索分享等场景再次进入时,都可以看做是小程序重新初始化,都会重新触发即将打开的页面的onload事件,但是由于小程序没有销毁所以不会再触发appjs中的onlaunch事件。