2010-03-01 96 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

相关问题