我有一个应用程序,它只在设备屏幕关闭时才开始工作。我已经设置了广播接收器 ( Intent.ACTION_SCREEN_OFF
),它工作正常。当设备屏幕关闭时,我总是在我的 LOGCAT 中记录。到目前为止,一切都很好。
我onReceive
来自 ACTION_SCREEN_OFF 的代码使用了一些代码计算的东西,并且一切都执行得很好(当屏幕熄灭时)。到目前为止,一切都很好。
在我的onReceive
代码结束时,我开始了新的活动,但onCreate
目标活动并不总是在执行。(例如,在我的 HTC Desire 2.3.7 上工作正常。在 HTC Wildfire S 2.3.5、Xperia Arc S 2.3.4 上它不执行,而在三星 Galaxy ACE 2.2.1 上,这取决于。有时正在执行有时不是' t)。我的 LOGCAT 显示onReceive
执行到最后但 Activity 没有启动。我正在使用以下代码开始此活动:
Intent startH_Activity = new Intent(getApplicationContext(), HandleActivity.class);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startH_Activity);
需要注意的重要事项:
我说在上面提到的某些手机上它不起作用。好吧,它不能立即工作,就像它应该的那样(当 SCREEN_OFF 触发时)。总是在屏幕关闭后 10-15 分钟开始活动(这是不可接受的)
当屏幕熄灭且活动未启动时,如果我按下设备上的电源按钮,它会立即关闭我的目标活动,并且应用程序正常工作。(同样这是不可接受的。它应该自动触发)。
当任何设备连接到 PC 时,它都可以正常工作。屏幕关闭后立即开始活动。
在阅读了很多 Stack Overflow 之后,我意识到这是因为 MAYBE 设备进入了睡眠状态。这就是为什么如果我按下 POWER 按钮它会正常工作,或者在 10-15 分钟后自动唤醒,因为它是同步的或其他东西。所以我使用了 WAKELOCK。
//OnCreate Service
powMan = (PowerManager) getSystemService(POWER_SERVICE);
wake = powMan.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
//OnReceive (screen goes off)
wake.acquire();
但仍然没有成功。(我做错了吗?)即使获得了唤醒锁定,我的活动也不会出现在这些设备上。
基本上就是我要问的。屏幕关闭时如何打开常规活动?或者至少在活动无法启动时如何打开屏幕(请记住,按下电源按钮会显示我的活动
我现在真的需要一些帮助,因为我对此感到非常沮丧。谢谢你的帮助。