2

我正在编写一个主要通过状态栏通知与用户交流的 Android 应用程序。但是,如果他/她没有真正直接与他们的手机交互,我不想打扰用户。例如,如果用户正在使用导航应用程序或看电影。我认为所有(或大多数)这类应用程序之间的共同点是它们保持屏幕打开。我相信应用程序可以通过使用 WakeLock 或通过在其活动上指定 keepScreenOn 参数来保持屏幕开启,可能还有其他方法。

我想知道,在我要显示通知之前,我是否可以检查另一个应用程序是否保持屏幕打开,这样我就可以避免打扰用户。我想涵盖所有选项。我可以看到 WakeLock 有一个 isHeld() 方法,但它会检测到其他方法吗?

谢谢,

4

3 回答 3

1

我认为你能得到的最好的是PowerManager.isScreenOn();

于 2011-10-11T17:53:12.960 回答
0

使用 ACQUIRE_CAUSES_WAKEUP 标志获取屏幕亮唤醒锁。你必须获得这个唤醒锁,因为如果没有,它会强制屏幕打开。即使屏幕已经打开,也不能保证它会一直保持打开直到您的应用程序运行,除非您获得唤醒锁。完成后不要忘记释放唤醒锁。

于 2011-10-17T05:15:11.023 回答
0

我认为无论状态如何,您都可以在状态栏上发布通知 - 需要用户全神贯注的应用程序通常会完全禁用状态栏的显示 - 因此您的更新不会造成任何伤害。

于 2011-10-17T06:06:46.430 回答