2011-09-30 29 views
3

我有几个AsyncTask做网络操作。最近我被要求在每个这些操作之后添加另一个调用远程服务发送一些统计数据的网络调用。我希望这个统计调用不要推迟'主'网络调用,所以我正在考虑在AsyncTaskdoInBackground()内创建和启动的线程中执行它们。该线程很可能会在doInBackground()以及可能整个AsyncTask结束后结束。我试过这个,它工作,但我想知道是否有副作用,如内存泄漏或类似?在AsyncTask的doInBackground()中执行一个线程

感谢)

回答

0

尝试开始在第一AsyncTasks 'onPostExecute' 方法的第二的AsyncTask。 对我来说,这工作没有任何问题。

+0

ya..that的是就在OnPostExecute ...... –

+0

开始的第二ASyncTasks嗯,这将需要一些努力,使我需要发送的数据'onPostExecute()'的统计数据...你看到我的方法,顺便说一句,工作有任何问题吗? – Venator85

0

如果你想在doInBackground方法来启动线程,可以在onProgressUpdate()方法来启动它

例子:

protected class MyTask extends AsyncTask<Void,Integer,Void> { 

     public static final int START_THREAD = -1; 
     @Override 
     protected void onProgressUpdate(Integer... values) { 
      if(values[0] == START_THREAD){ 
       startThread(); 
      } 
     } 

    @Override 
    protected Void doInBackground(Void... params) { 
     publishProgress(START_THREAD); 
     return null; 
    } 
} 
相关问题