我试图在onCreate()
活动中一次启动6个异步任务。但我注意到了以下内容:
a)如果我保持相同的活动,所有异步任务'doInBackground()
都会正确执行。
b)如果我切换到其他一些活动,则只执行4或5个异步任务“doInBackground()
”。最后async
任务的doInBackground()
永远不会执行。
有人可以告诉我可能做错了什么。我在for循环中盯着不同的asynctasks。如果我在onStart()中执行此操作,那么如果切换到此活动,则会再次执行所有异步任务。请帮忙。 以下是示例代码:
For(int i=0;i<7;i++){
webServiceTask= WebServiceTask.getInstance();
webServiceTask.execute("");
}
答案 0 :(得分:2)
也许您应该考虑以下几点:
快乐的编码!
答案 1 :(得分:1)
您需要某种服务才能在用户切换后保持您的流程处于活动状态。一旦您的活动失去焦点,Android就可以完全关闭您的流程。或者你的活动。这两种情况都会导致问题,特别是如果您正在使用已关闭的活动的上下文。
正确的事情(tm)是实现服务,并将操作传递给服务以执行。
为什么只有四个任务同时运行有很多原因。在我的头顶:
HttpConnection将与服务器的连接池连接起来,并对其进行限制 任何给定服务器的最大连接数到一些合理的 值。 4听起来不错。
您的目标服务器会限制同时连接的数量。
您的线程池没有您想象的那么大。启动API 16(我认为)默认的线程池大小是一个线程! (!!)理由:显然Android操作系统开发人员厌倦了Android应用程序开发人员做错线程。您的任务是否可以连续执行?这或多或少都符合你描述的症状。
但这是一个单独的问题。