在我的应用程序中,在主要活动的 onCreate() 方法中,我创建了一个唤醒锁,以便在手机处于待机状态/屏幕关闭时 CPU 将继续运行。
同样在 onCreate 方法中,我打算创建一个使用加速度计的服务。此服务需要在应用程序打开并监控加速度计值时持续运行(我知道这对电池不利,但我需要它来做到这一点)。这是我目前的代码,服务启动正常。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Howaya");
wl.acquire();
if (appStart == true)
{
Intent AccelService = new Intent(this, Accelerometer.class);
AccelService.putExtra("unreg", false);
startService(AccelService);
}
appStart = false;
}
我在清单中设置了以下权限 -
<uses-permission android:name="android.permission.WAKE_LOCK" />
我用不同的锁试过这个 - 暗屏和全亮度也无济于事。我在 logcat 上的输出在这里 -
F/PowerManager(15628): android.util.Log$TerribleFailure: WakeLock finalized while still held: Howaya
F/PowerManager(15628): at android.util.Log.wtf(Log.java:260)
F/PowerManager(15628): at android.util.Log.wtf(Log.java:239)
F/PowerManager(15628): at android.os.PowerManager$WakeLock.finalize(PowerManager.java:329)
F/PowerManager(15628): at dalvik.system.NativeStart.run(Native Method)
我见过有人说部分唤醒锁不能像他们应该做的那样工作,例如这个链接Google 待机错误页面,但这是去年发布并关闭的,所以我不知道是不是这样,有人可以帮忙吗?关于最后一点,我也有 HTC Desire,谢谢。