2010-03-01 95 views

回答

3

您可以使用AlarmManager觸發小部件的刷新。在安排下一個週期時,您可以定義是否喚醒設備(又稱執行實際任務)。

alarmManager.set(wakeUpType, triggerAtTime, pendingIntent); 
+4

或者,不要使用'WAKEUP'警報並堅持'setRepeating()'。如果你告訴鬧鐘不叫醒電話,它不會。 – CommonsWare 2010-03-01 23:09:50

1

您可以使用廣播接收器與行動過濾android.intent.action.SCREEN_ON和android.intent.action.SCREEN_OFF

小例子:

接收機:

public class ScreenOnOffReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) 
     { 
         // some code 
     } 
       if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
     { 
         // some code 
     } 
    } 
} 

您的清單:

<receiver android:name=".ScreenOnOffReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.SCREEN_ON" /> 
      <action android:name="android.intent.action.SCREEN_OFF" /> 
     </intent-filter> 
</receiver> 
+1

這不起作用:不幸的是,您無法在AndroidManifest.xml中註冊SCREEN_ON或SCREEN_OFF;你需要在代碼中做到這一點(不知道爲什麼,但我已經測試並證實了這一點)。 – 2012-04-25 18:34:23

+0

請參閱http://stackoverflow.com/a/1588267/338479的推理。不幸的是,您需要查看源代碼以查看哪些廣播需要通過registerReceiver(BroadcastReceiver,IntentFilter)註冊您的接收器而不是清單。 – 2012-12-14 02:35:57

+0

如果您在粘性服務中註冊了「SCREEN_ON」/「SCREEN_OFF」,則可以確定即使設備進入睡眠模式,它們也會保持活動狀態。特別是如果您在forground中啓動此服務... :) – Trinimon 2013-08-21 07:19:52

相關問題