8***@qq.com
8***@qq.com
  • 发布:2019-07-09 18:42
  • 更新:2022-04-30 17:08
  • 阅读:6422

native.js实现AlarmManager定时任务

分类:Native.js

由于公司业务需要,必须需要定时任务,以前从来没用过JAVA写代码,只能先研究了原生代码,再研究了《Android平台通过native.js实现接收系统消息,如监听安装卸载apk事件》,有了以下代码,在android9.0通过测试,代码如下:

var AlarmManager;  
var PendingIntent;  
var Intent;  
var IntentFilter;  
var Context;  
var Calendar;  
var main;  
var System;  
var receiver;  
var ALARM_EVENT = "com.kkaass.alarm";  

mui.plusReady(function(){  
    AlarmManager = plus.android.importClass('android.app.AlarmManager');  
    PendingIntent = plus.android.importClass('android.app.PendingIntent');  
    Intent = plus.android.importClass('android.content.Intent');  
    IntentFilter = plus.android.importClass('android.content.IntentFilter');  
    Context = plus.android.importClass('android.content.Context');  
    receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver',{  
        onReceive:function(context,intent){  
            if(intent != null){  
                console.log('闹铃来了');  
                SetAlarm();  
            }  
        }  
    });  
    main = plus.android.runtimeMainActivity();  
    Calendar = plus.android.importClass('java.util.Calendar');  
    System = plus.android.importClass('java.lang.System');  
    var intentfilter = new IntentFilter();  
    intentfilter.addAction(ALARM_EVENT);  
    main.registerReceiver(receiver,intentfilter)  

});  

function SetAlarm(){  
    var intent = new Intent(ALARM_EVENT);  
    var pendingintent = PendingIntent.getBroadcast(main,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);  
    var alarmManager =main.getSystemService(Context.ALARM_SERVICE);  
    var calendar = Calendar.getInstance();  
    calendar.setTimeInMillis(System.currentTimeMillis());  
    calendar.add(Calendar.SECOND,20);  
    alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingintent);//setAndAllowWhileIdle方法API>=23才能使用  

}
3 关注 分享
DCloud_heavensoft SimpleJalon linnian

要回复文章请先登录注册

it_dyh

it_dyh

我试了一下你的事例好像没打印输出哦,是需要特殊增加什么权限或者啥配置吗?这边有一个事例:http://ask.dcloud.net.cn/article/613 可以正常运行,但是安卓8.0就会出现时间延迟
2019-07-14 21:37
8***@qq.com

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

回复 it_dyh :
就是一个字符串
2019-07-13 18:11
it_dyh

it_dyh

请问一下,com.kkaass.alarm 这个是你自己的软件是吧?
2019-07-13 09:45
DCloud_heavensoft

DCloud_heavensoft

赞一个,iOS有吗?
2019-07-09 18:52