岳经理  189 1893 5218

曾经理  134 1010 8691

 

手机APP或小程序在后台时是否还能蓝牙AoA定位?


问题:APP或者小程序在后台时,手机能否作为定位信标终端定位?

下面,我们先来看2个问题:


问题1:为什么APP在手机后台运行一段时间后再次打开会比较慢或者可能重新启动APP?

从操作系统的角度来说,内存就是一块数据存储区域,是可被操作系统调度的资源。在多任务(进程)的OS中,内存管理尤为重要,OS需要为每一个进程合理的分配内存资源。所以可以从OS对内存和回收两方面来理解内存管理机制。

分配机制:为每一个任务(进程)分配一个合理大小的内存块,保证每一个进程能够正常的运行,同时确保进程不会占用太多的内存。

回收机制:当系统内存不足的时候,需要有一个合理的回收再分配机制,以保证新的进程可以正常运行。回收时杀死那些正在占用内存的进程,OS需要提供一个合理的杀死进程机制。

同样作为一个多任务的操作系统,Android系统对内存管理有有一套自己的方法,手机上的内存资源比PC更少,需要更加谨慎的管理内存。

手机OS对内存的使用方式是“尽最大限度的使用”,只有当内存不足的时候,才会杀死其它进程来回收足够的内存。但Android系统不可能随便的杀死一个进程,它也有一个机制杀死进程来回收内存。伸

 

Android OS杀死进程有两个参考条件:

 

1. 进程优先级

 

Android为每一个进程分配了优先组的概念,优先组越低的进程,被杀死的概率就越大。根据进程的重要性,划分为5级:

 

1)前台进程(Foreground process)

用户当前操作所必需的进程。通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。

 

2)可见进程(Visible process)

没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。

 

3)服务进程(Service process)

尽管服务进程与用户所见内容没有直接关联,但是它们通常在执行一些用户关心的操作(例如,在后台播放音乐或从网络下载数据)。因此,除非内存不足以维持所有前台进程和可见进程同时运行,否则系统会让服务进程保持运行状态。

 

4)后台进程(Background process)

后台进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。 通常会有很多后台进程在运行,因此它们会保存在 LRU 列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。

 

5)空进程(Empty process)

不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。

 

  通常情况下,前面三种进程不会被杀死。

2. 回收收益

当Android系统开始杀死LRU缓存中的进程时,系统会判断每个进程杀死后带来的回收收益。因为Android总是倾向于杀死一个能回收更多内存的进程,从而可以杀死更少的进程,来获取更多的内存。杀死的进程越少,对用户体验的影响就越小。

问题延为什么App要符合内存管理机制?

在Android系统中,符合内存管理机制的App,对Android系统和App来说,是一个双赢的过程。如每一个App都遵循这个规则,那么Android系统会更加流畅,也会带来更好的用户体验,App也可以更长时间的驻留在内存中。如果真的需要很多内存,可以采用多进程的方式。

问题2:微信小程序需要符合内存管理机制吗?

 

小程序从本质上来讲其实就是(混合)的app 介于web app与native 原生app之间,具备丰富的调用手机各种功能的接口,同时又具备灵活性,跨平台,当然也需要遵循微信或者手机OS的内存管理机制。


小程序运行机制

  • 前台/后台状态

小程序启动后,界面被展示给用户,此时小程序处于前台状态。

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态,小程序还可以运行一小段时间。

当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台。但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行。

  • 小程序启动

  小程序启动可以分为两种情况,一种是冷启动,一种是热启动。

冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。

热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

  • 小程序销毁时机

通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁。具体而言包括以下几种情形:

1)当小程序进入后台,可以维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁。

   2)当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。

 

iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户「运行内存不足,请重新打开该小程序」。

 

最后的结论:

1.无论是APP还是小程序,都需要遵循OS的内存管理机制,如果要一直保持app或者小程序在运行状态,只有保证其长期作为高优先级(前台、可见、服务)进程。

2.在蓝牙AoA定位系统中,手机通过APP或者微信小程序作为定位信标终端,当APP或者小程序被手机系统销毁后,因为没有了调用手机蓝牙广播数据的API接口,当然也不能定位了。




    深圳核芯物联科技,国内第1家正向自主研发量产2.4G AOA/蓝牙AOA/蓝牙AOA Plus/高精度融合精准定位基站及算法引擎的厂家,专注于AoA定位基站和定位算法的研发,保持开放合作的理念,为更多合作伙伴赋能。


核芯物联成立以来,成功推出了多款基于AoA/AoD算法的室内高精度定位设备,是国内首家正向自主研发量产2.4G蓝牙AoA定位基站并部署应用2.4G蓝牙AoA plus融合定位方案的厂商,引领了基于低功耗蓝牙方案的亚米级定位技术攻关与核心设备国产化趋势。欢迎更多的合作伙伴加入AoA定位生态,谋求共同发展。


核芯物联科技产品资料链接:

国产蓝牙AoA定位基站原厂,国内首家量产出货设备厂家

核芯物联正式发布支持苹果/安卓微信小程序蓝牙AOA定位基站

国产首发神器!核芯物联新一代长距离蓝牙AoA定位基站

核芯物联科技产品应用场景视频资料链接:

深圳核芯物联AoA高精度定位应用场景视频