私は書いた簡単なHTTP GET要求に少し問題があり、X分ごとにURLを要求します。私はGETリクエストの途中でプロセスが停止したことを1日に1〜2回は持っていました。Android:プロセスが終了しました - リソースが足りませんか?
ここでは、デバッグログの例です:
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.
今、この私だけのための2つの問題投げ:
まず、私が指定したタイムアウトは動作しません。
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);
第2の問題は、プロセスが終了した理由がわかりません。この「死んだ」メッセージは、メモリが足りなくなって殺されている場合も同じですか?ここでタイムアウトに達していないため(クライアント/実行ブロックはtry/catchブロック内にあります)
あなたの返信ありがとうございます!
Androidが、バックグラウンドで実行されていたためにメモリが必要だったため、プロセスが強制終了されたようです。 – THelper
これを防ぐことはできますか? –
はい(サービスを使用して)といいえ(Androidでメモリが足りなくなってもサービスは強制終了される可能性があります)。 [このブログ](http://android-developers.blogspot.com/2010/04/multitasking-android-way.html)を読んでください。特に「明示的にバックグラウンドで実行する」の部分です。 – THelper