Java 套接字连接需要安卓应用程序锁吗?

Java 套接字连接需要安卓应用程序锁吗?,java,android,android-service,android-wake-lock,Java,Android,Android Service,Android Wake Lock,我的应用程序通过我编码的服务与服务器保持套接字连接,但一旦手机休眠(屏幕关闭后几分钟),我就无法从休眠手机获得典型响应。当服务接收到网络事件时,通常会播放声音 我的问题是,我是否需要一个唤醒锁才能拥有我的应用程序功能。如果是,这个唤醒锁对哪些组件有帮助?我对声音和插座连接很好奇。我能用部分唤醒锁来完成吗 至于插座连接,如果在wifi下进行,我是否需要额外的wifi锁?插座连接只是偶尔进行一次小交易,所以有没有办法让插座连接不在wifi下(即使用户启用了wifi),这样我就不必锁定wifi并浪费电

我的应用程序通过我编码的服务与服务器保持套接字连接,但一旦手机休眠(屏幕关闭后几分钟),我就无法从休眠手机获得典型响应。当服务接收到网络事件时,通常会播放声音

我的问题是,我是否需要一个唤醒锁才能拥有我的应用程序功能。如果是,这个唤醒锁对哪些组件有帮助?我对声音和插座连接很好奇。我能用部分唤醒锁来完成吗

至于插座连接,如果在wifi下进行,我是否需要额外的wifi锁?插座连接只是偶尔进行一次小交易,所以有没有办法让插座连接不在wifi下(即使用户启用了wifi),这样我就不必锁定wifi并浪费电源?或者插座连接是否仅在3g/4g下方便完成,或者是否可以从wifi优雅地退化到3g/4g

谢谢

我是否需要一个唤醒锁才能使用我的应用程序功能

一般来说,是的。如果您的网络连接是通过移动数据进行的,并且您有一个打开的服务器套接字,并且该服务器向您发送数据包,则会短暂唤醒手机。然而,要做任何严肃的工作,您需要获得一个
唤醒锁
。如果上面的任何斜体if语句都不正确,那么您需要一个
WakeLock
,只要您试图维护此连接

请考虑切换到C2DM进行推送通知。

我能用部分唤醒锁来完成吗

部分
唤醒锁定应该足够了

如果在wifi下进行,我是否需要额外的wifi锁定

有没有一种方法可以让插座连接不在wifi下(即使用户启用了wifi),这样我就不必锁定wifi并浪费电源

不是真的。您请求套接字连接。您可以使用当时处于活动状态的任何网络

或者插座连接是否仅在3g/4g下方便完成,或者是否可以从wifi优雅地退化到3g/4g


如果WiFi断电或变得不可用,网络连接将优雅地回归到移动数据。但是,插座连接不起作用。如果您在WiFi上有一个插座连接,并且WiFi断电,那么您的插座将关闭,您需要在新网络上重新打开它。

为了在后台有效地耗尽电池电量,我建议您滥用WiFiManager.WifiLock。C2DM的优点是什么?@RickyPanzer:您不必维护插座连接,Android可以。对于套接字连接的另一端,您甚至不需要一个始终在线的服务器——Google提供了一个。