我知道这似乎是一个奇怪的问题,但我需要:
- 睡前获取信息
- 睡觉
- 做任务
- 醒来
- 获取断言结果
我尝试的是在测试的设置部分启用睡眠,不幸的是它会杀死一切(我知道这应该按照android的标准发生)。
谢谢,凯利
我知道这似乎是一个奇怪的问题,但我需要:
我尝试的是在测试的设置部分启用睡眠,不幸的是它会杀死一切(我知道这应该按照android的标准发生)。
谢谢,凯利
如果设备处于某种“睡眠”模式,那么您实际上无法做任何事情。听起来,您需要保留唤醒锁。
http://developer.android.com/reference/android/os/PowerManager.WakeLock.html
有不同级别的唤醒锁,您可能只需要一个允许屏幕关闭但仍允许您运行代码的锁。显然,这会影响电池性能,因此请确保您需要在设备“休眠”时进行操作,并确保在完成后释放唤醒锁!
啊哈!
好的,至少要确保研究屏幕的状态。您想要执行以下操作:
在您的模拟器中,转到 Settings \ Applications \ Development 区域并取消选中“Stay Awake”
此时,锁定您的模拟器。您应该会看到锁定屏幕。
现在,运行唤醒锁测试。
对我来说,我做了以下事情(使用 roboguice 1.1.2)
@MediumTest
public void test_And_Screen_Is_In_Sleep_It_Should_Not_Make_Screen_Bright() throws Exception
{
//currently test hates this even after I have assigned it the proper rights
//to quote Ted Striker: What a pisser! :)
//_power.get().goToSleep(0);
boolean screenOn = _power.get().isScreenOn();
assertFalse(screenOn);
if (!screenOn)
{
_wake.get();
boolean screenOn1 = _power.get().isScreenOn();
assertFalse(screenOn1);
}
if (_wake != null)
{
_wake.release();
}
}
我有一个名为 IWake 的接口,如下所示:
public interface IWake
{
void get();
void release();
}
在 IWake 的实现中,我简单地设置类来完成获取 (get()) 和释放(这也是 release())的所有繁重工作
为了强制测试设备锁定,我想出了一个好主意,因为您(通常)不能在 PowerManager 中使用该睡眠方法。
做这个!
在我的测试方法中,我为设置做了这个:
@Override
public void setUp() throws Exception
{
super.setUp();
_pwr = (PowerManager) getInstrumentation().getContext().getSystemService(Context.POWER_SERVICE);
//setup timeout which is part of: android.provider.Settings.System
System.putInt(getInstrumentation().getContext().getContentResolver(), System.SCREEN_OFF_TIMEOUT, 0);
}
基本上我决定在设置中将超时更改为 0。由于发生这种情况,它会立即将其锁定。这有多酷?:) 无论如何,我希望这对其他人有帮助
干杯,凯利