Android - 本机套接字在第一次尝试时未删除 3G-sleep-mode

Posted

技术标签:

【中文标题】Android - 本机套接字在第一次尝试时未删除 3G-sleep-mode【英文标题】:Android - native sockets not removing 3G-sleep-mode on first attempt 【发布时间】:2011-12-06 21:50:01 【问题描述】:

我有一个非常烦人的问题。 发生的情况是我有一个应用程序使用本机套接字通过 TCP 发送数据。 当我第一次启动我的应用程序并通过套接字发送数据时,什么都没有通过。但是,如果我然后退出该过程并重新启动它然后再次发送,它就可以工作。如果我在睡眠模式后第一次启动我的应用程序之前打开浏览器或其他东西,也会发生同样的事情。

在调用本机代码之前,如何“强制”3G 退出睡眠模式?

编辑:我已经尝试过使用 PowerManager。

【问题讨论】:

你在其他设备上试过了吗?我的 HTC Desire 上的本地 UDP 套接字存在一些相关问题,但在几款三星 Galaxy、华为或索尼爱立信手机上没有问题。 我在 HTC Desire 和 HTC EVO 3d 上试过这个。都有这个问题 也许只是期望第一次尝试失败,然后再过一两次重试?或者,向 www.example.com 发出一个虚拟的 HttpGetRequest,例如,在尝试您的真实网络代码之前唤醒网络层。 总有更好的办法,感觉太花哨了 【参考方案1】:

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

android Documentation

【讨论】:

【参考方案2】:

我会试试 ConnectivityManager API requestRouteToHost(int networkType, int hostAddress)

【讨论】:

以上是关于Android - 本机套接字在第一次尝试时未删除 3G-sleep-mode的主要内容,如果未能解决你的问题,请参考以下文章

Android LocalSocket客户端无法连接到抽象命名空间中的本机服务套接字

Android(本机):为啥我的套接字对其他进程不可用?

应用程序在android中终止时未收到通知

在 Android 上下载文件时未检测到 0 字节文件

尝试使用实时数据库通信时未收到通知

无法连接到 android 5.1 上的本机本地套接字