Android中未收到通知
我有一个每2分钟发送一次通知的服务 当手机锁定时,不会收到新通知,只有在我解锁手机时才会收到通知)Android中未收到通知,android,Android,我有一个每2分钟发送一次通知的服务 当手机锁定时,不会收到新通知,只有在我解锁手机时才会收到通知) 是否有任何方法可以更改它?当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟 尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁定(虽然可能会导致电池耗尽,不推荐使用)当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟 尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁(虽然可能会导
是否有任何方法可以更改它?当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟
尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁定(虽然可能会导致电池耗尽,不推荐使用)当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟
尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁(虽然可能会导致电池耗尽,不推荐使用)您可以使用PowerManager API实现您的目标:
您可以使用此功能短暂唤醒手机以处理通知。不过,请确保您熟悉PowerManager API的工作原理-编写代码时很容易消耗电池电量。使用PowerManager API,您可能能够实现您的目标:
您可以使用此功能短暂唤醒手机以处理通知。不过,请确保您熟悉PowerManager API的工作原理-编写代码时很容易耗尽电池电量。每2分钟运行一次任务的最佳解决方案是,不要使用wakelocks,除非您不需要将设备保持在工作模式(例如mp3播放器),因为它会消耗电池电量 为懒惰阅读手册的人更新 要使用AlarmManager,首先需要广播接收器
public class ExampleReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
// this method will be called by AlarmManager. But be carefull it has timeout
// if your task need more time, you should run thread from there with wakelocks
}
}
然后您可以将任务设置为AlarmManager
public class ExampleActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
Intent intent = new Intent(this,ExampleReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime()+INTERVAL,pendingIntent);
}
}
此示例在间隔后运行一次任务。它将唤醒此任务的手机。您可以在AlarmManager中设置重复任务,或者最好只从接收器设置新任务每2分钟运行一次任务的最佳解决方案是,不要使用wakelocks,除非您不需要将设备保持在工作模式(例如mp3播放器),因为它会消耗电池电量 为懒惰阅读手册的人更新 要使用AlarmManager,首先需要广播接收器
public class ExampleReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
// this method will be called by AlarmManager. But be carefull it has timeout
// if your task need more time, you should run thread from there with wakelocks
}
}
然后您可以将任务设置为AlarmManager
public class ExampleActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
Intent intent = new Intent(this,ExampleReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime()+INTERVAL,pendingIntent);
}
}
此示例在间隔后运行一次任务。它将唤醒此任务的手机。您可以在AlarmManager中设置重复任务,或者最好仅从接收器设置新任务此解决方案非常糟糕。您将使用设备电池。AlarmManager更适合重复任务在重新阅读问题后,我同意-亨利的答案更好。除非您首先试图阻止手机进入睡眠状态(您可能不应该这样做)。事实上,将与AlarmManager一起工作的广播接收器有超时,因此如果您的任务需要很长时间,您应该从接收器启动线程,并在该线程启动和工作时使用WakeLock。但是,如果只设置Notification,则没有必要这样做。这种解决方案非常糟糕。您将使用设备电池。AlarmManager更适合重复任务在重新阅读问题后,我同意-亨利的答案更好。除非您首先试图阻止手机进入睡眠状态(您可能不应该这样做)。事实上,将与AlarmManager一起工作的广播接收器有超时,因此如果您的任务需要很长时间,您应该从接收器启动线程,并在该线程启动和工作时使用WakeLock。但是,如果您只设置Notification(通知)是没有必要的。我使用mediaplayer使设备脱离睡眠模式,现在我可以接收通知,但更大的问题是我无法在特定时间自动启动意图。您读过AlarmManager使用示例吗?Henry,它工作正常:)但是唯一的问题是我需要找到代码来检查手机的状态,以确定它是否处于睡眠模式。你不能在BroadcastReceiver中检查它,因为当它启动时,设备被唤醒。顺便说一句,你需要这些信息做什么?也许有可能用另一种方式解决您的任务我使用mediaplayer使设备脱离睡眠模式,现在我能够接收通知,但更大的问题是我无法在特定时间自动启动意图..通过mediaplayer O_O您读过AlarmManager使用示例吗?Henry它工作正常:)但是唯一的问题是我需要找到代码来检查手机的状态,以确定它是否处于睡眠模式。你不能在BroadcastReceiver中检查它,因为当它启动时,设备被唤醒。顺便说一句,你需要这些信息做什么?有没有可能用另一种方式来解决你的任务