【发布时间】:2013-04-16 18:55:05
【问题描述】:
谁能给我解释一下对应的方法调用堆栈
您好,我正在开发一个 android 应用程序,我可以在其中将一些 mp3 文件上传到服务器上
这是给我上传文件的功能
uploadToServer(String arg1, String arg2)
现在我必须发送多个上传请求。我有两个 arg1 和 arg2 的 ArrayList
所以我使用 for 循环来迭代 ArrayList 并发送上传请求。
所以现在的问题是在第一次上传完成之前第二次自动启动。我还没有实现线程。那么为什么会这样。根据调用堆栈概念,直到第一个请求结束,第二个无法启动。为什么 for 循环的第二次迭代开始直到第一次完成。
【问题讨论】:
-
可能是uploadToServer是异步的,即没有完成就返回了……
-
@ThaMe90 是的,该方法是异步的。但是如果它的执行没有结束,程序执行怎么又回到for循环了
-
异步意味着操作在完成之前会返回。它通常会在事件完成后触发事件或调用回调方法。
-
如果是同步方法,完成后返回。
-
我建议阅读 wikipedia 上的异步性。简短的摘要是:异步方法将在启动的操作完成之前返回,因此您的应用程序不必等待所述操作的完成。它在某个后台线程中处理,当操作完成时会向您发出信号。
标签: java android multithreading file-upload for-loop