Android原生套接字在首次尝试时无法解除3G休眠模式

7
我有一个非常烦人的问题。我的应用程序使用本机套接字通过TCP发送数据。当我首次启动应用程序并通过套接字发送数据时,没有任何数据传输。但是,如果我退出进程并重新启动它,再次发送数据,则可以发送成功。同样的事情也会在睡眠模式后第一次启动我的应用程序之前打开浏览器或其他应用程序时发生。
如何在调用本机代码之前“强制”3G退出睡眠模式?
编辑:我已经尝试了PowerManager。

你在其他设备上尝试过吗?我在我的HTC Desire手机上使用原生UDP套接字遇到了一些问题,但在多个三星Galaxy、华为和索尼爱立信手机上没有问题。 - Andy
我已经在HTC Desire和HTC EVO 3d上尝试过了。两者都存在这个问题。 - KaiserJohaan
也许只需要预料第一次尝试失败,然后在一两秒后重试?或者,向www.example.com发出一个虚拟的HttpGetRequest,以唤醒网络层,然后再尝试您的真实网络代码。 - Reuben Scratton
不过,一定有更好的方法,这种感觉太花哨了。 - KaiserJohaan
2个回答

0

尝试在绑定套接字之前调用ConnectivityManager的startUsingNetworkFeature(int networkType,String feature)并等待其可用......

{{link1:Android文档}}


0

我会尝试使用 ConnectivityManager API 的 requestRouteToHost(int networkType, int hostAddress) 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接