Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中未收到通知_Android - Fatal编程技术网

Android中未收到通知

Android中未收到通知,android,Android,我有一个每2分钟发送一次通知的服务 当手机锁定时,不会收到新通知,只有在我解锁手机时才会收到通知) 是否有任何方法可以更改它?当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟 尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁定(虽然可能会导致电池耗尽,不推荐使用)当手机锁定时,设备将进入深度睡眠模式,并且不会处理任何与等待/睡眠计时器相关的延迟 尝试使用AlarmManager,每2分钟获取一次通知。或者可能是保持唤醒锁(虽然可能会导

我有一个每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中检查它,因为当它启动时,设备被唤醒。顺便说一句,你需要这些信息做什么?有没有可能用另一种方式来解决你的任务