我有一个只在设备屏幕熄灭时才开始工作的应用程序。我已经设置了广播接收机(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上,它取决于有时执行有时isn' 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时,它的工作方式应该如此。活动在屏幕熄灭后立即开始。
在阅读了很多堆栈溢出之后,我意识到这是因为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();
但仍然没有成功。 (我做错了吗?)即使唤醒锁被获取,我的活动也不会显示在这些设备上。
基本上我在问什么。如何在屏幕熄灭时打开常规活动?或者至少如何开启屏幕,如果活动不会开始(记住,按下电源按钮显示我的活动
我现在真的需要一些帮助,因为我对此感到非常沮丧。 。对于
屏幕关闭!指屏幕锁定? http://chandan-tech.blogspot.in/2010/10/handling-screen-lock-unlock-in-android.html – Raghunandan 2013-04-05 18:08:57
其实是的。我认为屏幕熄灭时所有设备都会锁定。 – rootpanthera 2013-04-05 18:37:39