0
我使用postDelayed來延遲動態持續時間。 我發現它無法正常工作。 這是我的源代碼。PostDelayed無法正常工作
public Runnable service = new Runnable() {
public void run() {
endTimeHere = System.currentTimeMillis();
Log.d("Time",(endTimeHere-startTimeHere)/1000);
switch (step)
{
case 0:
delay = 0;
step = 1;
break;
case 1:
delay = 600; //delay 10 min = 600 sec
step = 2;
break;
case 2:
delay = 1200; //delay 20 min = 1200 sec
step = 3;
break;
case 3:
delay = 1800; //delay 30 min = 1800 secs
step = 0;
break;
default:
break;
}
startTimeHere = System.currentTimeMillis();
handler.postDelayed(service, delay*1000);
}
};
而且我在BroadcastLintener中啓動和停止處理程序。
public Handler handler = new Handler();
private BroadcastReceiver screenReceiver = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if(Intent.ACTION_SCREEN_ON.equals(action))
{
handler.removeCallbacks(service);
}
else if(Intent.ACTION_SCREEN_OFF.equals(action))
{
handler.post(service);
}
}
}
我確定postDelayed是在隊列中添加的,因爲返回值爲true。 但是,我記錄的持續時間與我設置的延遲值不匹配。例如,我設置延遲= 600秒,記錄的持續時間= 958秒。
有誰知道爲什麼會發生這種情況?
你是否嘗試過使用部分喚醒鎖的代碼? – marcinj
不是。那是相關的嗎? – iscnorthwind
值得嘗試,你的設備migt在ACTION_SCREEN_OFF – marcinj