socket连接需要android app lock吗?

时间:2012-02-12 20:54:25

标签: java android android-service android-wake-lock

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

我的问题是,我是否需要wake_lock才能拥有自己的应用功能。如果是这样,wake_lock对哪些组件有用?我很好奇声音和插座连接。我只能用一部分wake_lock来完成这个吗?

至于插座连接,如果在wifi下完成,我还需要额外的wifi锁吗?套接字连接只包含一次小事务,所以有一种方法可以让我的套接字连接不在wifi下(即使用户启用了wifi),所以我不必wifi锁定和浪费电源?或插座连接是否只能在3g / 4g下方便地完成,或者可以从wifi优雅地退化到3g / 4g?

谢谢!

1 个答案:

答案 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断电,则您的套接字已关闭,您需要在新网络上重新打开它。