while (true)
{
if(currentTimes < totalTimes)
{
goToSleep(0);
}
else
break;
currentTimes++;
}
public void enableAlarm()
{
mAlarm = ((AlarmManager)getSystemService("alarm"));
System.out.println("enableAlarm:mSleepSecInput");
System.out.println(mSleepSecInput);
mAlarm.set(0, System.currentTimeMillis() + 1000L * mSleepSecInput, mSender);
}
void goToSleep(long paramLong)
{
Message localMessage = mHandler.obtainMessage();
if (paramLong == 0L)
mHandler.sendMessage(localMessage);
else
mHandler.sendMessageDelayed(localMessage, paramLong);
}
class MyHandler extends Handler
{
MyHandler()
{
}
public void handleMessage(Message paramMessage)
{
enableAlarm();
pm = ((PowerManager)getSystemService(Context.POWER_SERVICE));
pm.goToSleep(SystemClock.uptimeMillis());
finish();
}
}
想实现输入睡眠20s唤醒30s这样循环10次,打log发现每次都是while很快执行完了,然后才调用handleMessage并且只睡眠1次,不知道问题出在哪里
------解决方案--------------------
while 循环设置一个标签 每次你发送消息后 改变标签,让循环空执行,message处理完毕,动作执行结束以后再改变标签 让循环进行下一次