2016-10-30 6 views
1

私はAsyncTask(AsyncTaskアクティビティの5分が可能)で大きな仕事をするAndroidアプリケーションを開発しています。BIG AyncTaskでインターネット接続の変更を処理する方法

このタスクではインターネット接続が必要です。開始時にデバイスがオンラインかどうかを確認します。

しかし、モバイル接続へのWi-Fiからユーザーの変更接続のIFまたはGraphRequestが、私はこのエラーでクラッシュまし実行されているときにオフライン:ここ

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject org.json.JSONObject.getJSONObject(java.lang.String)' on a null object reference

はコードどこクラッシュの一部です:

// I Check if the device is online, if yes: 

for(j=0; j<n_foto_pub;j++) { 

     GraphRequest request2 = GraphRequest.newGraphPathRequest(
       AccessToken.getCurrentAccessToken(), 
       "MY_QUERY", 
       new GraphRequest.Callback() { 
        @Override 
        public void onCompleted(GraphResponse response) { 

         try {         
          JSONObject obj1 = response.getJSONObject(); 
          JSONObject obj2 = obj1.getJSONObject("data1"); <--- CRASH HERE 
          JSONObject obj3 = obj2.getJSONObject("data2"); 
          int ris = obj3.getInt("ris");        
          .......... 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }); 
     request2.executeAndWait(); 
     } 

私はキャッチしていますが、とにかくクラッシュします。

アプリのクラッシュを回避して、以前のアクティビティでユーザーを戻すにはどうすればよいですか?

答えて

1

下記のコードをご覧ください。より良いアイデアが得られます。

@Override 
    protected String doInBackground(String... params) { 
    { 
    try 
    { 
     //Your operation always inside try catch block to avoid crash. 
     for(j=0; j<n_foto_pub;j++) 
     { 
      if(checkInternet()) //check internet for each loop 
      { 

      } 
      else 
      { 
      callBackActivity(); 
      } 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     callBackActivity(); 
    } 
    } 
+0

私のループは本当にJSONリクエストで満たされていますので、このソリューションではどのような場合でもクラッシュする可能性が高いと思います。 – GMX

+0

try catchブロック内で最初のjsonリクエストが発生するので、アプリケーションがクラッシュすることはなく、例外が発生するだけです。例外が単純なcallbackActivity()メソッドに達したとき。私は私の答えを更新しました。私の答えはあなたに役立つ場合 –

+0

。受け入れ&upvote。それは他人を助けるでしょう。ハッピーヘルプ@GMX –

関連する問題