【问题标题】:Stop asyntask threads in android在android中停止异步任务线程
【发布时间】:2012-08-06 20:03:31
【问题描述】:

我正在扩展 AsynTask 以更新屏幕上的图像。图像从输入流通过套接字不断更新。 当我按下后退按钮时,我已经从异步任务 doinbackground() 中出来了。从 doinbackground() 出来后,我将关闭输入流和套接字。

我得到以下异常的地方

08-09 20:19:24.410: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
08-09 20:19:24.420: W/System.err(32597):    at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:448)
08-09 20:19:24.420: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
08-09 20:19:24.420: W/System.err(32597):    at com.einstructions.interwriteworkspace.WorkSpaceActivity$GetImageStreamFromServer.doInBackground(WorkSpaceActivity.java:618)
08-09 20:19:24.430: W/System.err(32597):    at android.os.AsyncTask$2.call(AsyncTask.java:252)
08-09 20:19:24.450: W/System.err(32597):    at java.lang.Thread.run(Thread.java:1020)
08-09 20:19:24.450: W/System.err(32597):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-09 20:19:24.470: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.480: W/System.err(32597):    at com.einstructions.interwriteworkspace.WorkSpaceActivity$GetImageStreamFromServer.doInBackground(WorkSpaceActivity.java:1)
08-09 20:19:24.480: W/System.err(32597):    at org.apache.harmony.luni.platform.OSNetworkSystem.read(Native Method)
08-09 20:19:24.480: W/System.err(32597):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-09 20:19:24.490: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
08-09 20:19:24.490: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.490: W/System.err(32597):    at com.einstructions.interwriteworkspace.WorkSpaceActivity$GetImageStreamFromServer.doInBackground(WorkSpaceActivity.java:618)
08-09 20:19:24.500: W/System.err(32597):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-09 20:19:24.500: W/System.err(32597):    at org.apache.harmony.luni.platform.OSNetworkSystem.read(Native Method)
08-09 20:19:24.500: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.500: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
08-09 20:19:24.510: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.510: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.510: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.520: W/System.err(32597):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-09 20:19:24.520: W/System.err(32597):    at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:448)
08-09 20:19:24.520: W/System.err(32597):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)

请帮帮我

问候 小型的。

【问题讨论】:

  • 你是先关闭流吗?
  • 首先:您的堆栈跟踪看起来并不完整。缺少实际异常的名称和消息以及异常的原因。其次:发布您的完整 AsyncTask 代码。

标签: android android-asynctask threadpool


【解决方案1】:

您必须在暂停/停止 Activity 时取消 GetImageStreamFromServer 任务。 在 onPause/onStop 里面使用,

getImageStreamFromServerTask.cancel(true);

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多