我的应用程序通过我编码的服务维护与服务器的套接字连接,但是一旦手机休眠(屏幕关闭后几分钟),我无法从睡眠电话获得典型的响应。当服务收到网络事件时,通常会播放声音。
我的问题是,我是否需要wake_lock才能拥有自己的应用功能。如果是这样,wake_lock对哪些组件有用?我很好奇声音和插座连接。我只能用一部分wake_lock来完成这个吗?
至于插座连接,如果在wifi下完成,我还需要额外的wifi锁吗?套接字连接只包含一次小事务,所以有一种方法可以让我的套接字连接不在wifi下(即使用户启用了wifi),所以我不必wifi锁定和浪费电源?或插座连接是否只能在3g / 4g下方便地完成,或者可以从wifi优雅地退化到3g / 4g?
谢谢!
答案 0 :(得分:1)
我需要一个wake_lock才能拥有我的应用功能
一般来说,是的。 如果您的网络连接是通过移动数据而,如果您有一个打开的服务器套接字,如果该服务器向您发送数据包,那将是简单地叫醒电话。但是,要做任何认真的工作,您需要获得WakeLock
。如果上面的任何斜体 if 语句都不正确,那么只要您尝试维护此连接,就需要WakeLock
。
因此,请考虑切换到C2DM以进行推送通知。
只使用部分wake_lock,我能够做到这一点吗?
部分WakeLock
就足够了。
如果在wifi下完成,我还需要额外的wifi锁吗?
是
有没有一种方法可以让我的套接字连接不在wifi下(即使用户启用了wifi),所以我没有wifi锁定和浪费电源?
不是真的。您请求套接字连接。您可以使用当时活动的任何网络。
或套接字连接只能在3g / 4g下方便地完成,还是可以从wifi优雅地退化到3g / 4g?
如果WiFi关闭或以其他方式不可用,网络连接会优雅地回退到移动数据。但是, socket连接不会。如果您在WiFi上有套接字连接,并且WiFi断电,则您的套接字已关闭,您需要在新网络上重新打开它。