2016-05-05 12 views
0

jsonを処理するためのasynctaskを書きました.jsonの結果は非常に長く(2Gで処理するには40〜70秒必要です)。asynctask publishProgress( "");関数は、jsonを取り出して処理した後(postexecute()の直前)にのみ実行されます。どのように毎秒更新できますか?AsyncTask Androidが進行中のリングを更新できません

​​

私が参照さ:Android, java - Unable to update variable from asynctask

Instance variable of Activity not being set in onPostExecute of AsyncTask or how to return data from AsyncTask to main UI thread

答えて

1

使用AsyncHttpClientをご.gradleファイルの進展

とプロセスのための今すぐcompile 'com.loopj.android:android-async-http:1.4.6'

を追加するサービスクラスを作成し、それを宣言するあなたのandroidmanifest.xml

あなたのサービスクラスのonStartCommandで次:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.e(TAG, "onStartCommand"); 

    try { 

     AsyncHttpClient client = new AsyncHttpClient(); 
     client.setURLEncodingEnabled(true); 

     client.post(this, url, params, new AsyncHttpResponseHandler() { 
      @Override 
      public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 

        // you code here after the work is done      

       stopService(); 
      } 

      @Override 
      public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 

       //your code here 
       stopService(); 

      } 

      @Override 
      public void onProgress(int bytesWritten, int totalSize) { 
       super.onProgress(bytesWritten, totalSize); 
       Log.e("Progess", "" + (bytesWritten/totalSize) * 100 + "%"); 

      } 
     }); 


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

    return super.onStartCommand(intent, flags, startId); 
} 

とあなたの活動コール

startService(serviceIntent); 
1

から

protected Void doInBackground(Integer... params) 
{ 
    publishProgress("Loading Questions... Please wait..."+per); 
    ... 
} 
+0

ようdoInBackground()からpublishProgressを使用して、あなたの進捗状況を公開するには、私がやったことのthatsれますintそれ? –

関連する問題