繁体   English   中英

Android:进程已死-资源不足?

[英]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块中)

多谢您的回覆!

如果我对您的理解正确,那么您会问两件事:

  • Q1:为什么指定的超时不起作用?
  • Q2。 为什么该过程终止?

从第二季度开始,我的猜测是您的进程被终止,因为超时不起作用并且您的代码花费了太长时间才能运行。 结果,Android杀死了它。

至于Q1:我做了一些实验,发现在模拟器中,超时也不适用于我的应用程序。 使用仿真器API7和API8进行测试不管设置超时如何,大约20秒后我总是会收到UnknownHostException 这适用于DefaultHttpClient以及HttpUrlConnectionAndroidHttpClient

Googling透露其他人也报告了超时问题:

所提出的解决方案均不适用于我,因此我认为唯一可靠的解决方案是自行管理超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM