小程序进入后台状态:当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁。 onHide 小程序从前台进入后台时触发onHide回调。...小程序进入前台状态:当再次进入微信或再次打开小程序,又会从后台进入前台。...,我们看看页面导航的一些方法和行为: 路由方式 触发时机 页面栈表现 进入方式 初始化 小程序打开的第一个页面 新页面入栈 从下往上升起 打开新页面 调用 API wx.navigateTo 新页面入栈...从右往左切入 页面重定向 调用 API wx.redirectTo 当前页面出栈,新页面入栈 页面重新加载 页面返回 返回/调用 API wx.navigateBack 页面不断出栈,直到目标返回页...从右往左切回 Tab 切换 切换/调用 API wx.switchTab 页面全部出栈,只留下新的 Tab 页面 页面重新加载 重加载 调用 API wx.reLaunch 页面全部出栈,只留下新的页面
当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。...onload是只会首次渲染的时候执行一次,onshow是每次界面切换都会执行,简单理解,这就是唯一差别。...小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。...当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。 六、启动方式 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。...假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动
App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。...onLaunch 生命周期回调—监听小程序初始化 小程序初始化完成时(全局只触发一次) onShow 生命周期回调—监听小程序显示 小程序启动,或从后台进入前台显示时 onHide 生命周期回调...—监听小程序隐藏 小程序从前台进入后台时 onError 错误监听函数 小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息 清除缓存 wx.removeStorageSync("token..."); wx.clearStorage() 全局变量每次关闭小程序重新打开的时候都会更新 全局变量是每个页面都能用,需要定义 缓存是每个页面都能用,需要存储缓存 缓存的更新需要setStorage token...} }) 如果过期重新调用wx.login接口。
onShow:每次小程序从后台进入前台时触发。onHide:每次小程序从前台进入后台时触发。onError:小程序发生错误时触发,传入错误信息。...('小程序进入前台'); }, onHide: function() { console.log('小程序进入后台'); }, onError: function(error) {...onShow:页面展示时触发,每次进入该页面时都会触发。onReady:页面初次渲染完成时触发。onHide:页面从前台进入后台时触发。onUnload:页面卸载时触发,适合做一些资源的清理工作。...优化网络请求小程序常常需要从服务器获取数据,如何优化网络请求是性能调优的关键之一。以下方法可以帮助优化请求性能:请求合并:如果页面需要获取多个接口的数据,可以考虑合并请求,减少请求次数。...示例:异步请求数据wx.request({ url: 'https://api.example.com/data', success: (res) => { // 异步获取数据 this.setData
} 但有个问题,一旦我们支持横屏,上面的这个方法就失效了。如果我们旋转设备,这个activity就会重新创建,onStart方法会第二次执行,导致程序错误的认为应用第二次被打开。...application类的onCreate方法首先需要订阅的,这样才能保证每次应用进入或退出前台的时候能收到通知。...这些程序必然会导致你的程序进入后台,因为你的应用的activity没有显示在前台。这种情况并不能当作用户离开了程序,因为他们并没有真正的离开。30秒的超时刚好可以解决这个问题。...实际上使用唤醒锁使这个看起来并不是什么大问题。 论应用如何启动 到目前为止,我们知道了如何检测应用是什么时候被打开或者关闭的,但是我们还不知道应用是如何被打开的。...getApplication().setLaunchMechanism(LaunchMechanism.URL); 记录通知事件 记录从通知进入是有诀窍的。
总结:小程序前端代码是统一上传到微信服务器,用户访问小程序时,微信客户端自动会去拉取小程序前端所有代码,小程序代码里再调用API从服务器取回数据,并把数据渲染到页面,然后展示给用户。...由上图知道每个小程序的所有页面都会在第一次启动时全部加载。 3.2 每个页面的路由都需要在app.json里定义,否则找不到该路由。如下: ?...3.3 Page页面的onload为第一次加载这个页面时执行,onshow为每次从后台又重新回到前台时会被调用。onReady为整个页面初次渲染完后执行。...,只需将后台态的小程序切换到前台,这个过程就是热启动。 ...,即当点击的时候去先加载要跳入的页面的API数据与创建webview的时间并行,这样当一进入页面加载时,就可以直接拉数据进行渲染了。
运行机制-启动 冷启动 热启动 热启动:假入用户已经打开某个小程序,然后在一定时间内再次打开小程序,这个时候,就不需要重新启动了,只需要把后台小程序切换到前台来使用,这个过程就叫做热启动。...初始化完毕后,微信客户端会给逻辑层App.js的app实例来派发onLaunch事件,那么onLaunch方法就会被调用。...进入小程序之后,用户可以点击“关闭”或者手机上的“Home”键离开小程序,这个时候小程序是没有被直接销毁,而是进入到后台的状态。在逻辑层App构造器所定义的onHide方法就会被调用。...当我们再次打开小程序的时候,微信客户端会把后台Hide的小程序唤醒,这个时候小程序就会进入前台状态。在App构造器里面的onShow方法就会被调用。...---- 当页面初次加载的时候,微信客户端会给我们在逻辑层所定义的一个配置实例派发一个onLoad事件,那么配置构造器参数所定义的onLoad方法就会被调用,这个onLoad方法在页面没被销毁之前只会调用一次
;从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次;除了这种区别,在实际使用中没有其他明显区别; 2、Activity A 启动另一个Activity...standard标准模式:每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在,此模式的Activity默认会进入启动它的Activity所属的任务栈中; singleTop栈顶复用模式...23级别下,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次 在Android9 即API 28级别下,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法...fragment,replace每次都会。...,当收到广播时,重新启动service; 4.提升Service进程的优先级:进程优先级由高到低:前台进程 一 可视进程 一 服务进程 一 后台进程 一 空进程。
App() 函数是用来注册一个小程序的,接收一个object参数,必须在app.js中调用,App() 必须调用且只能调用一次,app.js中定义了几个应用级的生命周期函数,具体如下所示:onLaunch...: 初始化小程序完成时触发,且全局只触发一次;onShow: 小程序初始化完成(启动)或从后台切换到前台显示时触发;onHide: 小程序从前台切换到后台隐藏时触发(如切换到其他app中);onError...,那么小程序会从后台进入前台而被唤醒。...在每一个页面注册函数Page()的参数里面,定义的几个关于页面生命周期函数,具体如下所示:onLoad:进入页面加载时触发,且只执行一次;onShow:页面展示时候,也就是加载完成后、后台切到前台或重新进入页面时触发...,可以执行多次;onReady:页面首次渲染完成的时候触发,且只执行一次;onHide:页面从前台切到后台或进入其他页面触发;onUnload:页面卸载时触发;下面来看一下具体的几个常用的页面级生命周期函数的示例
当屏幕方向变化时,系统会销毁并重新创建前台 Activity,因为屏幕配置已更改并且您的 Activity 可能需要加载备用资源(比如布局)。...方法,不会重新调用整个生命周期了。...再比如新闻客户端收到了100个推送,你每次点一下推送他都会进入某个activiy界面(显singleTask 模式 又称为栈内复用模式。...从图中我们看出前台任务栈分别为AB两个Activity,后台任务栈分别为CD两个任务栈,而且其启动模式均为singleTask,此时我们先启动CD,然后再启动AB,再有B启动D,此时后台任务栈便会被切换到前台...结合时的应用场景 TaskAffinity与singleTask应用场景 假如现在有这么一个需求,我们的客户端app正处于后台运行,此时我们因为某些需要,让微信调用自己客户端app的某个页面,用户完成相关操作后
大型App几乎都会存在API 高频调用、违规调用问题,因此在开发时应尽可能的减少敏感API的调用,不调用与当前业务无关的系统敏感API。...当App处于后台时, 调用收口方法时, 收口方法不会调用系统方法, 而是直接返回默认值, 解决App在后台获取敏感信息的问题。...而限制敏感API后台调用的前提是: 如何正确判断App前后台状态。 通常判断App前后台状态有几种方式: 方式1:通过ActivityManager获取进程列表,筛选前台进程。...从合规的角度,当App只有可见时才会认为在前台,即使是前台进程也不应该调用敏感API。...所以需通知其他进程前后台状态,来解决多进程情况,综合所有进程状态得到App前后台状态。 任何一个进程有页面在前台,则App处在前台。
所以要设置后台继续运行,则在这个函数里面设置即可 - (void)applicationWillEnterForeground:(UIApplication *)application 当程序从后台将要重新回到前台时候调用...2.2、加载应用程序进入后台 ?...按锁屏键也是另外一种程序的中断,当你按下锁屏键,系统屏蔽了所有触摸事件,把app放到了后台,这时app状态是 inactive,并进入后台。 3.2 当有这些中断时,我们的app该怎么办呢?...在程序返回后台或前台是,程序都要正确的处理这些通知。 6、程序的终止 程序只要符合以下情况之一,只要进入后台或挂起状态就会终止: iOS4.0以前的系统 app是基于iOS4.0之前系统开发的。...app如果终止了 ,系统会调用app的代理的方法 applicationWillTerminate: 这样可以让你可以做一些清理工作。你可以保存一些数据或app的状态。这个方法也有5秒钟的限制。
小程序的生命周期函数 onLoad : 页面加载时触发。一个页面只会调用一次,可以在 onLoad的参数中获取打开当前页面路径中的参数 onShow : 页面显示 / 切入前台时触发调用。...如何封装小程序请求 封装 wx.request 请求传递需要的参数( url , data , method , success 成功回调 , fail 失败回调 ) , 封装常用方法...最后导出这些方法 然后新建一个 api.js 文件,导入封装好的方法,然后调取相应的方法,传递数据。...小程序运行机制 热启动 :假如用户已经打开了某个小程序,在一定时间内再次打开小程序的话,这个时候我们就不再需要重新启动了,这需要把我们的后台打开的小程序切换到前台来使用。...小程序在进入后台之后,客户端会帮我们在一定时间内维持我们的一个状态,超过五分钟后,会被微信主动销毁.
; 从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次; 除了这种区别,在实际使用中没有其他明显区别; 2、Activity A 启动另一个Activity...参考回答: standard标准模式:每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在,此模式的Activity默认会进入启动它的Activity所属的任务栈中; singleTop...23级别下,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次 在Android9 即API 28级别下,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法...|screenSize"时,机型测试通过,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法; 推荐文章:Android 横竖屏切换加载不同的布局 8、如何启动其他应用的...fragment,replace每次都会。
/** * 当小程序启动,或从后台进入前台显示,会触发 onShow (应用进入前台) */ onShow: function (options) { },.../** * 当小程序从前台进入后台,会触发 onHide (应用进入后台) */ onHide: function () { }, /** * 当小程序发生脚本错误...,或者 api 调用失败时,会触发 onError 并带上错误信息 */ onError: function (msg) { } }) 重要概念: 后台:当用户点击左上角关闭...(或者右上角退出),或者按了home键离开微信,小程序并没有直接销毁,而是进入了后台。...前台:当再次进入微信或者再次打开小程序,又会从后台进入前台。
应用还没有加载 这时如果点击通知的显示按钮,会调用didFinishLaunchingWithOptions,不会调用didReceiveRemoteNotification方法。...3).应用在后台 (1)此时如果收到通知,点击显示按钮,会调用didReceiveRemoteNotification方法。...(2)点击关闭再点击应用,则上面两个方法都不会被调用这时,会调用applicationDidBecomeActive 解决方法 根据上面的三种情况可以总结一下 点击通知会根据app是否启动,未启用调用didFinishLaunchingWithOptions...app,设置全局变量,在需要跳转的页面根据全局变量进行跳转 2) 应用在前台或后台 在所有可跳转的页面添加消息的观察者 override func viewWillAppear(animated: Bool...postNotificationName("notificationPushView", object: nil); 注意 添加观察者最好在viewWillAppear中添加 在viewWillDisappear中移除 否则每次接受到推送都会打开页面
onShow:监听小程序显示,当小程序启动,或者从后台进入前台显示,会触发onShow。 onHide:监听小程序隐藏,当小程序从前台进入后台,会触发onHide。...onError:错误监听函数,当小程序发生脚本错误,或者API调用失败时,会触发onError并带上错误信息。...小程序的缓存永久存在,不存在过期时间这个概念,如果想清除缓存,则需要主动调用清除缓存的API。 小程序的本地缓存有容量上限,最大不允许超过10MB。...; }, }) 优化缓存初始化判断 上述代码将在小程序每次启动时,都会执行一次,但是缓存如果不主动清除,就一直存在。...如果每次启动时都重新初始化存储,那么对数据库的修改就会被初始化的数据覆盖。接着我们来进行优化。 思路 1、使用wx.getStorageSync(key)方法获取指定key的缓存内容。