android休眠之后 定时任务TimerTask不生效

本人也是安卓菜鸟一枚,入行不久,公司需要实现一个功能: 就是没有连接电源,黑屏(休眠)之后倒计时20分钟之后让机器关机。当时我就觉得也不是很难,我再Luancher中

可以注册动态广播监测到黑屏的操作,然后加入一个判断标志看是否连接了电源,然后执行倒计时任务就ok了。谁知道休眠之后,居然计时任务不生效了。我弄了很久才发现。后来就百度啊,然后找到了wakeLock,把延迟任务放入wakeLock中就ok了。核心代码如下

1、PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
   wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LauncherActivity.class.getName()); 
   wakeLock.acquire();
    taskHandler.sendEmptyMessageDelayed(102, 20*6000);

因为在launcher中mianactivity中写的 在ondestory方法中wakeLock.release();释放掉了。

t说明:askHandler.sendEmptyMessageDelayed(102, 20*6000); 这个就是休眠之后它还会一直等到20分钟之后发送一个消息 我就是让让关机的 Handler代码如下:

2、 private  Handler taskHandler=new Handler(){
     @Override
     public void dispatchMessage(Message msg) {
      // TODO Auto-generated method stub
      switch (msg.what) {
   case 101:
//    SDcardManager.WriteErrorLogToFile("execute shutdown");
//    if(autoShutDownTimer==null){
//     autoShutDownTimer=new Timer();
//     autoShutDownTimer.schedule(autoShutdownTask,10000);
//    }
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LauncherActivity.class.getName());
    wakeLock.acquire();
    taskHandler.sendEmptyMessageDelayed(102, 20*6000);
    break;
   case 102:
    Shuntdown();
    break;
   default:
    break;
   }
     }
    };

  /*
     * 关机操作  这个方法 在 用户app中行不通
     */
    public void Shuntdown()
 {
  Intent intent =new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN"); 
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  startActivity(intent);  

 }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值