2012-04-23 43 views
0

私のユーザーは、WiFiを使用してJSONファイルをダウンロードすると、チャームのように動作しますが、GPRS、3G、3.5Gなどのデータ接続を使用して同じファイルをダウンロードしようとしました。アプリの強制は終了します。すべての種類のスマートフォンで発生することはありません。たとえば、私のLG Optimus Blackでは起こりません。インターネットデータ接続に失敗しました

このファイルを取得するために、私はAsyncTaskを使用します。

private class GetData extends AsyncTask<Void, Void, Void> { 
     protected Void doInBackground(Void... args) { 

      DefaultHttpClient httpclient = new DefaultHttpClient(); 
      try { 

       HttpGet httpget = new HttpGet("http://url.com); 
       HttpResponse response = httpclient.execute(httpget); 
       strPlayers = inputStreamToString(response.getEntity().getContent()).toString(); 
      } 
      catch (IOException e) { e.printStackTrace(); } 
      finally { httpclient.getConnectionManager().shutdown(); } 

      return null; 
     } 

     protected void onPostExecute(Void result) { 

      Players players = new Gson().fromJson(strPlayers, Players.class); 

      quantity_darkmatter.setText(String.valueOf(players.userName)); 

     } 
    } 

は、ここで問題になることが何のStackTrace()

java.lang.RuntimeException: Unable to start activity ComponentInfo{carl.fri.fer.omegan/carl.fri.fer.omegan.Research}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3701) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at carl.fri.fer.omegan.Research.onStart(Research.java:613) 
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129) 
at android.app.Activity.performStart(Activity.java:3791) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1632) 
... 11 more 

ですか?

+0

まあ、どこかでヌルポインタがありますが、Research.javaではどうなりますか? –

答えて

0

非WIFIの場合、接続にかなりの時間がかかる可能性があります。接続タイムアウトの問題が発生する可能性があります。strPlayersは空白になり、onPostExecuteにエラー処理がないため、Gson.fromJson hickupsとmakeそれは例外をスローします...それを解析しようとする前にstrPlayers!= nullをテストしようとするか、try-catchブロックに入れて何らかの例外をスローするかどうかを調べてみてください。

doInBackground関数にe.printStackTrace()の出力がありますか?

+0

hmm ...デフォルトでDefaultHttpClientは無制限のタイムアウトを持っているため、アプリがハングしている可能性があります。タイムアウトを設定して接続がタイムアウトしたかどうかを確認してください(エラーメッセージが表示されます)。 printStackTrace() 'ed ...なぜ、httpclientがサーバーに接続しないのかは別の質問です...多分、apacheのdefaulthttpclientは、待ち時間の長い接続の携帯電話で使用されていないのですか? –

+0

これを見るには:http://stackoverflow.com/questions/6705170/httpclient-execute-keeps-giving-connecttimeoutexception –

+0

私はstackTraceで自分の投稿を編集しました。リンクを見ていきます!あなた! –

関連する問題