后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)
http://ask.dcloud.net.cn/question/28090
https://blog.csdn.net/qq_37508970/article/details/86649703
各位新年好
小弟以前用hbuilder开发过几个项目,现在有一新需求项目,在考虑是否使用它来实现:
需要APP在后台能定期离线监控用户定位数据,使用的是百度地图,我已经知道可以离线获取定位信息,但不知道如何能后台运行(APP不关闭,切换到后台,或者熄屏后它能继续运行),在后台定期(如20分钟)获取用户当前的位置,并记录在本地(如localstorage),然后上线时向服务器提交这些数据。
想请教各HBUILDER大神,或者DCLOUD的技术员们,这个是否可行,并且有没最简便的方法(如不需要触碰原生插件开发是最好),需支持android与IOS,谢谢。
13 个回复
app的事件有pause和resume,你可以在pause时候启动你的位置监听服务。但是Android会杀进程,需要在系统里面手动设置一下。但是demo用下来感觉不稳定。内存占用也相当大。
附赠一段以前写的测试小demo
复制代码//后台运行监听器
document.addEventListener("pause",function(){
if(interval==null){
interval = setInterval("listenner()",10000);
}
});
//回到前台监听器,添加回到程序运行的事件,清除监听器
document.addEventListener("resume", function(){
window.clearInterval(interval);
interval = null;
}, false );
/**
* 定时监听服务
*/
function listenner(){
//先获取当前地理位置
plus.geolocation.getCurrentPosition(function(pos){
//后台实时定位交互
//------交互逻辑
//拿到数据之后提示
plus.push.createMessage("提示标题","{text:\"回执的json数据\"}",{title:"测试":附近有好玩的地方哦~",cover:true});
//播放一段提示语音
plus.audio.createPlayer("_www/audio/scenicAlert.wav").play(function(){
plus.audio.createPlayer("_www/audio/lookAlert.wav").play();
});
},function(e){
console.log("Gelocation Error: code - "+e.code+"; message - "+e.message);
},{timeout:5000,provider:'baidu'});
}
我来说下我的痛苦经历(IOS),Android 因为非原生,也做不到所谓的双进程保活,这里略过:
1.HBuilder 打包的IOS应用并不能做到后台长久保活,即使你设置了后台定位,原因是DCloud的云端打包机没有支持
- 设置,隐私,定位,更改为始终,还是不能做到长久保活
所以后来采取这样的方法:
1.manifest.xml 里配置后台运行模式,配置后台定位、后台播放音乐
- js 代码做定时任务,播放无声音乐,每2分钟播放 1秒(保证到了后台3分钟的时效时,重新激活下应用,再次延长3分钟)
- 安装到IOS上后,手动去设置里,隐私,定位,更改为始终
以上就这些,如果是IOS离线打包的,可以做到后台长久定位,至于Android 的,就我手头的华为、小米、魅族机器来测试看,微信、QQ也并不是真正的双进程保活,之所以杀不掉,是被厂商加入了白名单(华为),小米机器一杀一个准
对了,主动后台运行,iOS貌似不可以,年代太久记不清了。Android如下:
复制代码/**
* 后台运行
*/
function backRunning(){
var main = plus.android.runtimeMainActivity();
main.moveTaskToBack(false);
}
pango (作者)
谢谢回复,我之前查好像IOS有一个叫UIbackendmode的东西,不知道是否可行,让APP进入后台(熄灭屏幕)后能定期监听位置
2017-02-04 19:06
--------------------------------------------------------------------------------------------------------------------------------
"pause" : 运行环境从前台切换到后台事件
document.addEventListener("pause", pauseCallback, capture);
1
tips: 当app从前台切换到后台时会触发此事件。 若应用需要处理从前台切换到后台的事件行为,可通过注册事件监听器来监听“pause”事件,此事件需要在plusready事件后通过document进行注册。"resume": 运行环境从后台切换到前台事件
document.addEventListener("resume", resumeCallback, capture);
1
tips: 当app从后台切换到前台时会触发此事件。 若应用需要处理从后台切换到前台的事件行为,可通过注册事件监听器来监听“resume”事件,此事件需要在plusready事件后通过document进行注册。此文章,参考Hbuilder官方文档:http://www.html5plus.org/doc/zh_cn/events.html#plus.Events.%22resume%22
后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)的更多相关文章
- HBuilder后台保活开发(后台自动运行,定期记录定位数据)
http://ask.dcloud.net.cn/question/28090 后台自动运行,定期记录定位数据 分类:HTML5+ 各位新年好 小弟以前用hbuilder开发过几个项目,现在有一新 ...
- Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时
概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...
- 【VIP视频网站项目】VIP视频网站项目v1.0.3版本发布啦(程序一键安装+电影后台自动抓取+代码结构调整)
在线体验地址:http://vip.52tech.tech/ GIthub源码:https://github.com/xiugangzhang/vip.github.io 项目预览 主页面 登录页面 ...
- 使用 shell 脚本自动获取发版指标数据
问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...
- servlet自动获取前端页面提交数据
servlet自动获取前端页面jsp提交数据 以下是本人在学习过程中,因前端页面提交参数过多,后台servlet封装实体类过于麻烦而写的一个工具类,应用于jsp/servlet数据提交后,基于MVC+ ...
- EF core (code first) 通过自动迁移实现多租户数据分离 :按Schema分离数据
前言 本文是多租户系列文章的附加操作文章,如果想查看系列中的其他文章请查看下列文章 主线文章 Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF ...
- 平凡的KTV后台,不平凡的KTV数据
之前就是说过“一个项目有很多重要的步骤以及功能”,那我们现在就来看看对于KTV项目来说:后台是处于什么样的重要作用! 首先就得了解KTV后台的一些功能了: 1.歌曲管理 .歌手管理 .设置资源路径 2 ...
- DWM1000 定位数据收发以及定位算法
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 定位数据 官方定位程序,建议先学习基础API程序 参考手册: 在手册上提到,目前双向定 ...
- windows 2008R2系统程序运行提示无法定位程序输入点ucrtbase.terminate
1.用python写了个脚本,打成exe程序,在一些机器上正常运行,再另外一些机器上运行提示 无法定位程序输入点ucrtbase.terminate 应该是缺少库文件支持 2.网上搜了下.https: ...
随机推荐
- ionic 解决APP安装到android上 状态栏显示黑色
首先移除原本的 cordova-plugin-statusbar 运行命令: cordova plugin rm cordova-plugin-statusbar 最后需要重新安装: cordova ...
- spring cloud(一)带你进入分布式
spring cloud是近年来比较火的热门话题,很多大型公司也渐渐转型使用spring cloud来完善各种开发模式,我认为主要是由spring团队开发由来,致使会有那么多的使用者,在java的领域 ...
- 非阻塞IO发送http请求
import socket from urllib.parse import urlparse from selectors import DefaultSelector, EVENT_READ, E ...
- jdk安装环境变量配置
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 高性能场景下,HashMap的优化使用建议
1. HashMap 在JDK 7 与 JDK8 下的差别 顺便理一下HashMap.get(Object key)的几个关键步骤,作为后面讨论的基础. 1.1 获取key的HashCode并二次加工 ...
- Vuejs的$nextTick原理
本质: nextTick,本质上是一个异步API,表示当前同步流程执行完成后再调用传入的函数. 根据环境不同,异步API的实现可以分别通过: setTimeout(0), new Promise(), ...
- 查看selinux与关闭方法
查看当前用户selinux 状态 [root@o- ~]# getenforce Disabled [root@o- ~]# setenforce usage: setenforce [ Enforc ...
- python基础——字典
字典内置函数&方法 Python字典包含了以下内置函数: 序号 函数及描述 1 cmp(dict1, dict2)比较两个字典元素. 2 len(dict)计算字典元素个数,即键的总数. 3 ...
- neutron之neutron_openvswitch_agent占用100%CPU资源问题
基于kolla-ansible部署的queens版本,基于docker stats查看openstack的资源占用,发现neutron_openvswitch_agent一直占用100%CPU资源,这 ...
- 第二章:深入分析java I/O的工作机制
.2.1 java的I/O类库的基本架构 I/O的机器获取和交换信息的主要渠道,在当今数据大爆炸时代,I/O问题尤其突出,很容易成为一个性能瓶颈,Java在I/O上也一直做持续的优化,现在也引入了NI ...