【发布时间】:2015-06-29 10:18:11
【问题描述】:
我有一个 android 应用程序,主要专注于检索显示以及将数据写入在线数据库。我在应用程序中有几个活动,它们使用不同的 Asynctasks 和 http 请求来加载不同的数据。当我启动应用程序时,一切都会迅速加载,当我在不同的活动之间切换时也是如此。但是,如果我在它们之间快速切换,最终屏幕会变黑,大约一分钟后应用程序再次出现,并且数据加载非常非常缓慢。我不确定这是缓存问题还是其他问题。
LOGCAT
06-29 12:23:03.792 14635-14667/com.example.albert.bettertipapp I/System.out﹕ AsyncTask #1 calls detatch()
06-29 12:23:03.792 14635-14667/com.example.albert.bettertipapp W/System.err﹕ org.apache.http.conn.HttpHostConnectException: Connection to http://altesting.byethost33.com refused
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:235)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:167)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.executeSB(DefaultRequestDirector.java:807)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:675)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:570)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:491)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:469)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at com.example.albert.betterapp.JSONParser.makeHttpRequest(JSONParser.java:70)
06-29 12:23:03.802 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at com.example.albert.betterapp.OldBets$LoadAllGames.doInBackground(OldBets.java:99)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at com.example.albert.betterapp.OldBets$LoadAllGames.doInBackground(OldBets.java:79)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
06-29 12:23:03.812 14635-14667/com.example.albert.bettertipapp W/System.err﹕ Caused by: java.net.ConnectException: failed to connect to /185.27.134.108 (port 80): connect failed: ETIMEDOUT (Connection timed out)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at libcore.io.IoBridge.connect(IoBridge.java:114)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at java.net.Socket.connect(Socket.java:833)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:188)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ ... 16 more
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at libcore.io.Posix.connect(Native Method)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ at libcore.io.IoBridge.connect(IoBridge.java:112)
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp W/System.err﹕ ... 21 more
06-29 12:23:03.822 14635-14667/com.example.albert.bettertipapp E/Buffer Error﹕ Error converting result java.io.IOException: Attempted read on closed stream.
【问题讨论】:
-
首先,Asynctasks 在 UI 线程上工作几秒钟后它在后台线程上工作,这就是为什么你的应用程序屏幕变为黑屏的原因。尝试使用新线程。
-
发布了logcat,我知道这是应用程序不作为导致连接超时而不是问题本身的结果
标签: android android-asynctask httprequest