我有一个应用程序需要不断使用WiFi和加速计传感器来收集数据,因此我需要使用 WakeLock 方法来保持这些传感器的活动状态。但现在我遇到的问题是手机有时会在运行几个小时后随机重启。我不知道这是由我的应用程序或手机的固件引起的。有没有人对此有一些想法。实际上,在我的应用程序中,我认为只有一件事我需要一直使用 WakeLock ,因此wakelock会导致手机随机重启吗?
答案 0 :(得分:1)
WakeLock通常不会导致重新启动问题。您的编码可能还有其他一些问题。 如果在使用后没有释放,WakeLock会严重占用电池。
WakeLock是一种保持屏幕开启的低效方式。而是使用WindowManager来做魔术。以下一行就足够了WakeLock。为此,还需要WakeLock权限。此代码也比wakeLock更有效。
getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
您无需手动重新启动WakeLock。此代码将允许Android系统自动处理锁定。当您的应用程序位于Foreground中时,将保留WakeLock,否则android System会自动释放Lock。
答案 1 :(得分:0)
你应该尝试在你需要唤醒锁的任何布局中使用android:keepScreenOn =“true”。它会自动处理它,最好只在你的xml布局中设置它,因为它不会使你的代码与显示相关的代码混乱。
Google IO 2009正在讨论这个问题。http://dl.google.com/io/2009/pres/W_0300_CodingforLife-BatteryLifeThatIs.pdf