[英]Android: Process has died - low resources?
我编写的简单HTTP GET请求有一个小问题,该请求每隔X分钟会请求一个URL。 我每天一次或两次在GET请求中停止该过程。
这是调试日志的示例:
12-07 16:29:22.650 V/TAG(11655): Executing HTTP Request
12-07 16:29:25.336 D/dalvikvm(11655): GC_CONCURRENT freed 366K, 50% free 2824K/5639K, external 0K/0K, paused 3ms+3ms
12-07 16:29:25.526 D/dalvikvm(11655): GC_CONCURRENT freed 450K, 52% free 2825K/5767K, external 0K/0K, paused 2ms+2ms
12-07 16:29:29.990 I/ActivityManager( 1339): Process PackageName:remote (pid 11655) has died.
12-07 16:29:29.990 I/ActivityManager( 1339): Low Memory: No more background processes.
现在这给我带来了两个问题:
首先,我指定的超时不起作用:
HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 10000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); int timeoutSocket = 10000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); HttpClient client=new DefaultHttpClient(httpParameters); HttpGet request=new HttpGet(url); Log.v(TAG,"Executing HTTP Request"); HttpResponse response=client.execute(request);
第二个问题是我看不到进程死亡的原因-如果由于内存不足而被杀死,那么“死亡”消息是否相同? 因为此处尚未达到超时(client.execute在try / catch块中)
多谢您的回覆!
如果我对您的理解正确,那么您会问两件事:
从第二季度开始,我的猜测是您的进程被终止,因为超时不起作用并且您的代码花费了太长时间才能运行。 结果,Android杀死了它。
至于Q1:我做了一些实验,发现在模拟器中,超时也不适用于我的应用程序。 使用仿真器API7和API8进行测试不管设置超时如何,大约20秒后我总是会收到UnknownHostException
。 这适用于DefaultHttpClient
以及HttpUrlConnection
和AndroidHttpClient
。
Googling透露其他人也报告了超时问题:
所提出的解决方案均不适用于我,因此我认为唯一可靠的解决方案是自行管理超时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.