2***@qq.com
2***@qq.com
  • 发布:2021-08-23 08:20
  • 更新:2021-08-23 13:44
  • 阅读:1089

【报Bug】app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.2.2

手机系统: Android

手机系统版本号: Android 7.0

手机厂商: 小米

手机机型: 小米6,小米10s

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
    doSettime(){  
            //启动定时任务  
        this.smsTitle='运行中';  
        //设置是否在运行中  
        this.isrun=!this.isrun;  
        if(this.isrun==false){  
               if(this.g_wakelock != null && this.g_wakelock.isHeld()) {    
                    this.g_wakelock.release();    
                    this.g_wakelock = null;    
                }   
            clearInterval(this.inTime);  
                this.smsTitle='获取短信';  
                return false;  
        }  

            const that=this;  
            this.inTime=setInterval(  
                    ()=>{  
                        this.getMessage();  
                        //this.getSmsMaxTime()  
                    }  
            ,300000);  
        },  
    async   getMessage(){  

            //不同机型可能获取不全  
            //查看权限是否已允许  
            var that=this;  
            //判断时间在20点-8点取消获取短信  
            var  nowHours=new Date().getHours();  
            if(nowHours>=18 || nowHours<=8){  
                return false;  
            }  
            //  
                        //获取短信内容  
                        var Context = plus.android.runtimeMainActivity();  
                        var res = plus.android.invoke('android.support.v4.app.ActivityCompat', 'checkSelfPermission', Context, 'android.permission.READ_SMS');  

                            var PERMISSIONS_STORAGE = new Array();  
                            PERMISSIONS_STORAGE.push('android.permission.READ_SMS');  
                            // res == -1 时为询问状态,询问时会走Show 和 Hidden  
                            if (res != '0') {  
                                plus.android.invoke('android.support.v4.app.ActivityCompat', 'requestPermissions', Context, PERMISSIONS_STORAGE, 1);  
                            } else {  
                                that.sms=[];  
                                var main = plus.android.runtimeMainActivity();  
                                var Uri = plus.android.importClass('android.net.Uri');  
                                var ContactsContract = plus.android.importClass('android.provider.ContactsContract');  
                                var uri = Uri.parse('content://sms/');  
                                var cr = main.getContentResolver();  
                                plus.android.importClass(cr);  
                                var cur = cr.query(uri, null, null, null, null);  
                                plus.android.importClass(cur);  
                                //cur.moveToFirst();  
                                that.count++;  
                                that.smsTitle='运行'+that.count+'次';  

                                while (cur.moveToNext()) {  
                                    // 时间  
                                    var index_date = cur.getColumnIndex("date");  
                                    var date = cur.getString(index_date);  
                                    //如果是原内容,就退出  
                                    if(date<=that.title){  
                                        break;  
                                    }  
                                    //类型1接收 2发送  
                                    var index_Type = cur.getColumnIndex('type');  
                                    var type = cur.getString(index_Type);  
                                    if(type!=1){  
                                        continue;  
                                    }  
                                    var index_Address = cur.getColumnIndex('address');  
                                    var address = cur.getString(index_Address);  
                                    var isAllowSms=this.allowSms.indexOf(address);  
                                    if(isAllowSms===-1){  
                                        continue;  
                                    }  
                                    //短信内容  
                                    var index_Body = cur.getColumnIndex('body');  
                                    var body = cur.getString(index_Body);  

                                    //console.log(address, body, type);  

                                    that.sms.push({  
                                        address:address,  
                                        body:body,  
                                        type:type,  
                                        date:date  
                                    })  
                                    // 收件人  
                                    // 短信内容  
                                    // 短信的类型  
                                }  
                                cur.close();  
                                if(that.sms.length!=0){  
                                    var phpres=await that.$myRequest({  
                                        url:'api/user/smsAdd',  
                                        method:'POST',  
                                        data:{list:JSON.stringify(that.sms)}  
                                    });  
                                    that.title=phpres.data.data.maxtime;  
                                }  

                            }  

        }

操作步骤:

app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。

预期结果:

希望app在后台也能运行,

实际结果:

现在的时候任务,把app切换到后台,就停止运行了

bug描述:

app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。

2021-08-23 08:20 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

现在定时任务,去掉 async await 。然后访问接口用的Uni.request现在好像可以了。

该问题目前已经被锁定, 无法添加新回复