【发布时间】:2013-04-05 16:39:43
【问题描述】:
我有一个应用程序,它只在设备屏幕关闭时才开始工作。我已经设置了广播接收器(Intent.ACTION_SCREEN_OFF),它工作正常。当设备屏幕关闭时,我总是在我的 LOGCAT 中记录。到目前为止一切顺利。
我的来自 ACTION_SCREEN_OFF 的onReceive 代码使用了一些代码计算的东西,并且一切都执行得很好(当屏幕熄灭时)。到目前为止一切顺利。
在我的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 设备进入睡眠状态。这就是为什么如果我按下电源按钮,它会像正常工作一样工作,或者在 10-15 分钟后自动唤醒,因为它是同步的或什么的。所以我使用了 WAKELOCK。
//OnCreate Service
powMan = (PowerManager) getSystemService(POWER_SERVICE);
wake = powMan.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
//OnReceive (screen goes off)
wake.acquire();
但仍然没有成功。 (我做错了吗?)即使获得了唤醒锁定,我的活动也不会显示在这些设备上。
基本上就是我要问的。屏幕关闭时如何打开常规活动?或者至少在活动无法启动时如何打开屏幕(请记住,按下电源按钮会显示我的活动
我现在真的需要一些帮助,因为我对此感到非常沮丧。谢谢你的帮助。
【问题讨论】:
-
屏幕关闭!指的是屏幕锁定? chandan-tech.blogspot.in/2010/10/…
-
其实是的。我认为屏幕关闭时所有设备都会锁定。
标签: java android android-intent android-activity broadcastreceiver