相关疑难解决方法(0)

AsyncTask线程永远不会死

我正在使用AsyncTasks来获取数据以响应用户按下按钮.这很好用并且在获取数据时保持接口响应,但是当我检查Eclipse调试器中发生了什么时,我发现每次AsyncTask创建一个新的(这通常是因为它们只能使用一次),正在创建一个新线程,但从未终止.

结果是大量的AsyncTask线程就坐在那里.我不确定这在实践中是否是一个问题,但我真的想摆脱那些额外的线程.

我怎么能杀死这些线程?

multithreading android android-asynctask

112
推荐指数
2
解决办法
3万
查看次数

来自AsyncTask的RejectedExecutionException,但没有达到限制

我的Android应用程序必须处理到达的消息,这些消息经常串联(特别是在片状连接期间).我在AsyncTasks中处理这些传入的消息,这样我就不会干扰UI线程.如果一次收到太多消息,我会得到一个RejectedExecutionException.我的错误堆栈如下所示:

10-22 14:44:49.398: E/AndroidRuntime(17834): Caused by: java.util.concurrent.RejectedExecutionException: Task android.os.AsyncTask$3@414cbe68 rejected from java.util.concurrent.ThreadPoolExecutor@412716b8[Running, pool size = 128, active threads = 22, queued tasks = 0, completed tasks = 1323]
10-22 14:44:49.398: E/AndroidRuntime(17834):    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1967)
10-22 14:44:49.398: E/AndroidRuntime(17834):    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:782)
10-22 14:44:49.398: E/AndroidRuntime(17834):    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1303)
10-22 14:44:49.398: E/AndroidRuntime(17834):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:564)
Run Code Online (Sandbox Code Playgroud)

我正在运行任务,task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)以便并行处理传入的消息.

令人困惑的是,与我能找到的相关StackOverflow问题(例如此处此处)不同的是,活动线程和排队任务的数量似乎没有超出限制(似乎是128)和10,分别).查看stacktrace:

ThreadPoolExecutor@412716b8[Running, pool size = 128, active threads = 22, queued tasks = 0, completed tasks = 1323]

为什么我会收到此错误消息?

multithreading android

17
推荐指数
2
解决办法
2万
查看次数

我可以在单个流程应用程序中运行多少个AsyncTasks

我正在使用asyncTasks,用图像加载列表元素(只需按照android的有效加载位图的教程)

在DDMS中,我可以看到最多5个AsyncTasks正在运行

此外,我还添加了另一个AsyncTask,它使用MediaCodec类执行一些解码.

现在在DDMS中,我仍然看到5个AsyncTasks,我的图像加载aynctask或解码异步任务执行,而不是两个.

当解码正在运行时,如果我滚动列表,元素的图像不会更新当我通过调用它的执行方法启动新的解码asynctask时,解码不会启动,但如果我现在滚动列表视图,图像会更新.

那么AsyncTask是否有限制?

即使在listAdapter中,我也会根据getView调用启动AsyncTask.我期待7个运行asyncTasks(如果列表可见元素是7,比方说),但DDMS只显示5个asynctasks正在运行.

现在有人可以解释一下我无法拼写的黑魔法是什么吗?

android executorservice android-asynctask threadpoolexecutor

11
推荐指数
1
解决办法
8871
查看次数

可以在类android中使用多少异步任务?

最近我参加了一次采访,其中我被问到一个问题:课堂上可以使用多少个asynctask?通过使用execute方法,您将通过调用asynctask来使用.因此,类中asynctask的最大限制是向我提出的问题.

这是什么答案?有人可以解释一下,为什么?

performance android asynchronous android-activity

1
推荐指数
1
解决办法
1485
查看次数