我制作了一个应用程序,每隔5-10分钟连接一次我的服务器,检查数据库是否有变化。
所以我使用服务,以便应用程序可以在后台运行,用户可以关闭应用程序并在状态栏中获取消息。在它里面我使用Thread让应用程序睡眠5-10分钟。当我锁定手机时问题就开始了。比应用程序只是停止(这是因为当你锁定你的手机进入“睡眠”),所以我发现我需要这个:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 'My Tag');
wl.acquire();
除了屏幕外,强迫手机不要睡觉。但是我卡住了。这样可以正常工作,但可以将电池耗尽。每小时10%:(而且我相信应用程序必须让这些Web服务请求所有的时间,但这个功能迫使手机活着。
所以,我的问题是,如果有任何其他解决方案我可以使用,因为我在backgorund运行的手机上有一些应用程序,但他们根本没有耗尽电池(avast,果汁防御者等等)。 )。
任何想法都非常有用!
问候!
答案 0 :(得分:1)
如何使用推送机制(例如C2DM for Android)而不是一直轮询。
答案 1 :(得分:1)
答案 2 :(得分:1)
你必须尽快释放唤醒锁。不要使用它们。而是尝试使用Broadcast receiver和AlarmManger来做你想做的事。
答案 3 :(得分:1)
闹钟管理器和Broadcst接收器是你的朋友。而且你也可以考虑一下,如果电话的状态变化有多么重要,那么电话就会深深地陷入困境中。那么重要的是,即使在这种情况下它也必须发生吗?
答案 4 :(得分:0)
你可以设置一个带有RTC标志的AlarmManager,每5分钟启动一次服务(也许是IntentService更好),在服务获取唤醒锁的同时进行网络操作,并在你完成后立即停止服务。