【问题标题】:Connection Refused in WearableListenerService / Android Wear when phone in sleep mode当手机处于睡眠模式时,WearableListenerService / Android Wear 中的连接被拒绝
【发布时间】:2015-03-17 18:32:19
【问题描述】:

我正在开发一个 Android Wear Watchface,它通过将 MessageAPI 请求从 Wear 发送到我的移动应用程序来访问互联网,我在其中运行 WearableListenerService,在我的移动应用程序上,我在 onMessageReceived 和onMessageReceived 我启动了一个 AsyncTask 以从 Internet 检索图像。

这一切正常正常。

但是,如果手机在几分钟内处于非活动状态(黑屏,未通过 USB 连接到我的 Mac),当 AsyncTask 尝试在此行检索输入流时,我会收到“ECONNREFUSED - 连接被服务器拒绝”:

InputStream is = (InputStream) new URL(mUrl).getContent();

这里是例外:

java.net.ConnectException: failed to connect to dl.dropboxusercontent.com/xx.xx.xxx.xx (port 443): connect failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.connect(IoBridge.java:118)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
at java.net.Socket.connect(Socket.java:838)
at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
at com.android.okhttp.Connection.connect(Connection.java:101)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:143)
at java.net.URLConnection.getContentType(URLConnection.java:326)
at java.net.URLConnection.getContent(URLConnection.java:193)
at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getContent(HttpsURLConnectionImpl.java:169)
at java.net.URL.getContent(URL.java:455)
at wear.webcam.MobileRequestListenerService$MyImageLoaderTask.doInBackground(MobileRequestListenerService.java:479)
at wear.webcam.MobileRequestListenerService$MyImageLoaderTask.doInBackground(MobileRequestListenerService.java:451)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
at libcore.io.Posix.connect(Native Method)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
at libcore.io.IoBridge.connectErrno(IoBridge.java:131)
at libcore.io.IoBridge.connect(IoBridge.java:116)
... 23 more
  • 我的应用在一分钟后重试,当手机开机(屏幕打开)时,它就可以工作了!
  • 这与我正在调用的服务器/网址无关,因为我在不同的服务器上遇到相同的错误。
  • 它与Wifi无关,因为无论是在Wifi还是普通网络中都会发生。
  • 这发生在 PROD/Signed 和 DEBUG 版本中
  • 我正在检查网络是否在通话前可用,我返回“真实”,所以网络确实打开了!

public boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();
    // if no network is available networkInfo will be null
    // otherwise check if we are connected
    if (networkInfo != null && networkInfo.isConnected()) {
        return true;
    }
    return false;
}

看起来这个问题可以通过获取唤醒锁来解决 - 但是到目前为止这并没有解决问题。

感谢任何帮助!!!

Android 4.4.4 索尼 Xperia Z1; Android Wear 5.0.2。

【问题讨论】:

    标签: android wear-os


    【解决方案1】:

    已解决:事实证明,原因是 Xperia 上的节能选项:它设置为“STAMINA-Modus”,导致设备无法唤醒。

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2012-07-07
      相关资源
      最近更新 更多