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

3
我有几个AsyncTask在进行网络操作。最近被要求在每个操作之后添加另一个网络调用,该调用调用远程服务并发送一些统计信息。我希望这个统计调用不会延迟“主”网络调用,所以我考虑在AsyncTaskdoInBackground()中创建和启动线程来执行它们。这个线程很可能会在doInBackground()甚至整个AsyncTask结束后结束。我尝试了这个方法,它能正常工作,但我想知道是否有副作用,例如内存泄漏或类似问题吗?
感谢;)
2个回答

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;
    }
}

0
尝试在第一个AsyncTask的'onPostExecute'方法中启动第二个AsyncTask。对我来说,这样做没有任何问题。

嗯,这需要一些努力才能使我需要发送到统计信息的数据在onPostExecute()中可用...你看到我的方法有什么问题吗?顺便说一句,它是有效的。 - Venator85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接