【发布时间】:2015-07-30 15:34:53
【问题描述】:
我创建了一个在所有手机上都能正常运行的安卓应用。但在我的阿尔卡特手机中,它不会,因为手机进入深度睡眠模式并且数据网络出现故障,因此应用程序没有获得数据网络,也没有从服务器同步数据。
我的设计……
SystemBootReceiver --> (DataSyncService)Service --> (MyBroadcastReceiver)BroadcastReceiver --> (MyDataService)Service .
所以在系统启动时,我启动DataSyncService,在那里我设置AlarmManager(重复)并调用MyBroadcastRecever。调用BroadcastRecever 后,我通过调用stopself() 停止DataSyncService。
现在MyBroadcastRecever 调用MyDataService。
我遇到了 WakeLocks,据说可以防止手机进入深度睡眠模式。
所以我在MyDataServiceonCreate()方法里面实现了它
PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
mWakeLock.acquire();
和release() 停止服务之前的唤醒锁。
我还在 android Manifest 中设置了权限。
但这没有用。因此,为了快速检查,我使用了市场上的 WAKE LOCK 应用程序。
但这也没有唤醒手机。我再次从市场上发现了 WAKE MY ANDROID(从商店中删除的应用)应用并安装了它......这里发生了奇迹。
它让手机保持活力。
正如这个应用程序中的描述所说,他们还使用了Wake Lock。那我错过了什么?
是否存在实施错误或设计问题?
【问题讨论】:
-
也许,您可以尝试使用 SCREEN_DIM_WAKE_LOCK 标记 ACQUIRE_CAUSES_WAKEUP
-
你能澄清你的问题吗?问题是唤醒设备后应用运行时网络请求失败?
-
你的问题解决了吗?
-
@Mr_and_Mrs_D 是的,我已经用你给出的答案解决了这个问题。谢谢,我也遇到了 WakefulBroadcastReceiver developer.android.com/reference/android/support/v4/content/…
标签: android wakelock android-wake-lock