在AsyncTask的doInBackground()中执行一个线程

时间:2011-09-30 07:44:19

标签: android multithreading android-asynctask

我有几个AsyncTask正在进行网络操作。最近我被要求在每次操作之后添加另一个调用远程服务发送一些统计信息的网络调用。我希望这个统计调用不会延迟'主'网络调用,所以我想在一个创建并在AsyncTask的{​​{1}}内部启动的线程中执行它们。这个帖子很可能在doInBackground()之后结束,可能整个doInBackground()结束。我试过这个并且它可以工作,但我想知道是否有副作用,例如内存泄漏或类似情况?

谢谢;)

2 个答案:

答案 0 :(得分:0)

尝试在第一个AsyncTasks'onPostExecute'方法中启动第二个AsyncTask。 对我而言,这没有任何问题。

答案 1 :(得分: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;
    }
}