k***@hotmail.com
k***@hotmail.com
  • 发布:2017-03-29 09:31
  • 更新:2024-03-25 16:57
  • 阅读:45821

移动app如何在手机关屏后仍能正常运行、接收信息

分类:Native.js

最近在弄一个安卓APP,需要每隔几秒钟上报一次GPS位置,但发现当手机休眠后(屏幕熄灭后)APP不再运行,因此也不能上报GPS位置。

借助安卓的WakeLock机制,我们可以实现让APP在后台运行。实现代码如下:


var g_wakelock = null;  
//允许程序后台运行,以持续获取GPS位置  
function wakeLock() {  
    //Android  
    var main = plus.android.runtimeMainActivity();  
    var Context = plus.android.importClass("android.content.Context");  
    var PowerManager = plus.android.importClass("android.os.PowerManager");  
    var pm = main.getSystemService(Context.POWER_SERVICE);  
    g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME");  
    g_wakelock.acquire();  
}  

//结束程序后台运行  
function releaseWakeLock () {  
    if(g_wakelock != null && g_wakelock.isHeld()) {  
        g_wakelock.release();  
        g_wakelock = null;  
    }  
}  

在需要允许后台运行的时候调用wakeLock(),在希望停止的时候调用releaseWakeLock()

20 关注 分享
3***@qq.com bxdsam 拜仁已伤 MR不靠谱 李致荣 ai666 言会咸 9***@qq.com 5***@qq.com flyer456 映月辉煌 老哥教教我 a***@gezhong.vip aiyide d***@163.com 百倍 左眼皮跳跳 x***@163.com 刘先生啊 A1

要回复文章请先登录注册

2***@qq.com

2***@qq.com

楼主我想问下你这个用在哪个地方呢?
2021-03-08 12:00
s***@qq.com

s***@qq.com

我写的h5,在h5中调用了该方法,打包apk后,在手机上运行,息屏状态,从息屏开始,过5分钟就无法执行定时器了。
2021-01-15 10:15
土豆三三

土豆三三

回复 torch :
这段代码写在那??
2020-10-20 15:09
Levi丶

Levi丶

回复 代码游侠 :
请问这个问题有解决方案了吗?
2020-07-28 08:38
torch

torch

回复 5***@qq.com :
不用,直接写就行
2020-06-17 19:56
torch

torch

这个方法可行,但是需要跳转到应用设置->电量开启后台定位功能才行;测试结果如下:华为没问题,三星、小米在后台运行没问题,但是在黑屏下偶尔有触发。
2020-06-17 19:55
5***@qq.com

5***@qq.com

回复 5***@qq.com :
已解决,不过我是通过手机的应用设置才做到的,只靠这段代码实现不了。
机型:一加7pro
解决方法:在某个app的应用信息中,选择高级然后在电池优化里面选择不优化。
就可以了。
2020-05-08 10:24
5***@qq.com

5***@qq.com

自己的业务代码是要写在g_wakelock.acquire(); 下面吗?
2020-05-06 15:30
5***@qq.com

5***@qq.com

为什么我的就撑一分钟就不行了。
我的需求是每隔几分钟的时间,向后端发送一个请求获取数据。
2020-05-06 15:04
z***@163.com

z***@163.com

同plus.device.setWakelock(true);有啥区别
2020-02-20 22:47