2016-04-11 5 views
0
  1. するために、サーバからDoinbackgroundデータのフェッチの前に実行され、私はDoinBackground方法OnPostExecute方法は私のAndroidの非同期タスククラスではローカル

  2. の内側しかしDoinBackgroundを終了する前に、ローカル・データベースへのAzureサーバーからデータをフェッチしています方法、それは私がProgressBar

を無効にしています OnPostExecuteメソッド内 OnPostExecute方法

  • を実行しています

    この問題を解決するのに手伝ってください。

    マイコード:

    public class AsyncTaskSync_UserGroupMappingTableClass extends AsyncTask<String, String, Boolean> 
    { 
         { 
    
         @Override 
         protected void onPreExecute() 
         { 
          super.onPreExecute(); 
         } 
    
         @Override 
         protected Boolean doInBackground(String... values) 
         { 
          try 
          { 
           mToDoTable_Form5_SPINNER_DataTable456_ServerAzure 
               .execute(new TableQueryCallback<FormsObjectTable2TaskHopsSPinnerValues>() { 
                public void onCompleted(List<FormsObjectTable2TaskHopsSPinnerValues> result, int count, Exception exception, ServiceFilterResponse response) { 
             if (exception == null) { 
              if (!result.equals("")) { 
               for (int i = 0; i < result.size(); i++) { 
                /*Table 5 SPinner Data Table*/ 
                IdValue_TableValue5 = result.get(i).getId(); 
                ImeiStringval1_TableValue5 = result.get(i).getImeINumberValOne(); 
                Spinner_IDStringVal1_TableValue5 = result.get(i).getSpinner_id_StringOne(); 
                Spinner_data_StringVal1_TableValue5 = result.get(i).getSPinner_data_Value_StringOne(); 
                Log.i("From SErver DataBase", " Spinner : " + ImeiStringval1_TableValue5 + " : " + Spinner_IDStringVal1_TableValue5 + " : " + Spinner_data_StringVal1_TableValue5); 
                Asynxfor_DATAinsert5_SpinnerTable(IdValue_TableValue5, ImeiStringval1_TableValue5, Spinner_IDStringVal1_TableValue5, Spinner_data_StringVal1_TableValue5); 
               } 
              } else { 
               Log.i("Data Retrieval Not Found", "No Data In Server For Specific IMEI......!"); 
              } 
            } else { 
              Log.i("SOme Exception", "Data Retrieval From Server FORMTABLE1 Data......!"); 
              exception.printStackTrace(); 
            } 
           } 
          }); 
         } 
         catch (Exception e) 
         { 
          e.printStackTrace();; 
          Log.i("Data Retrieval", "Exception Occur......!"); 
         } 
    
         // PrgDialog.dismiss(); 
         return null; 
        } 
    
        @Override 
        protected void onPostExecute(Boolean results) 
        { 
         try 
         { 
          Log.i("DONE ", "Data Sync Done Successfully 5 Spinner Values"); 
          PrgDialog.dismiss(); 
         } 
         catch (Exception e) 
         { 
          e.printStackTrace(); 
          Log.i("Exception ", "Post Excecute"); 
         } 
        } 
    }; 
    

    編集1

    マイLogcatメッセージ:

    // From OnPostExecute first Executing also disabling the Progressbar 
    DONE: Data Sync Done Successfully Form Master 1 
    
    // From Doinbackground 
    From Server database 
    
  • +0

    logcatを共有できますか? –

    +0

    DONE:データ同期が正常に完了しましたマスター1 – Kumar

    +0

    'execute()'メソッド自体が非同期で、コールバックオブジェクトの引数をとる理由が想像できます。つまり、それを 'AsyncTask'に入れる必要はありません。 –

    答えて

    1

    あなたはdoInBackground内でやっているの要求がなされasynchronuslyことだdoInBackgroundが実行すでにあることを意味しTableQueryCallbackを取得する前につまり、別のスレッドを起動しているスレッドです。私はあなたがAsyncTaskでそれを囲む必要はないと思う、あなたはハンドラまたはインターフェイスでTableQueryCallback.onCompleted()であなたの応答を処理することができます。

    +0

    私の更新された非同期タスクをチェックする別クラス – Kumar

    +0

    あなたが何を提案しているのか試してみてください。 – Kumar

    +0

    OnCompletedメソッドの中で友人、そのWorked-ありがとう、ProgressBar Disablingを呼び出しました。 – Kumar

    関連する問題