ScheduledThreadPoolExcecutor中的RejectedExecutionException

时间:2012-11-15 07:50:07

标签: android multithreading

我在查看ScheduledThreadPoolExecutor时遇到异常。我用这个每分钟轮询一次服务器。

01-11 18:45:50.243: E/AndroidRuntime(2427): Caused by: java.util.concurrent.RejectedExecutionException: pool=0/2147483647, queue=0

我的代码

stpe.scheduleWithFixedDelay(new Runnable() {  
        public void run() {  

            //Start Polling:
            Calendar cal = Calendar.getInstance();
            cal.getTime();
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            System.out.println( sdf.format(cal.getTime()) );
            Log.d("Polling", sdf.format(cal.getTime()) + " Polling for devices");

            HttpUtil httpUtil = new HttpUtil(mContext);
            httpUtil.setJNAPCode(R.string.action_devices);
            httpUtil.executeJNAPAction(true);


        }  
    },0, 60,TimeUnit.SECONDS);          

创建活动时调用此方法。我每次开始活动时都会收到此异常,即下次崩溃后加载时它会正常工作。

在完成活动之前,我使用 stpe.shutdownNow()将其关闭。但是,下次在加载应用程序后创建此活动时,我会得到异常。

1 个答案:

答案 0 :(得分:0)

执行程序关闭后,您无法提交新任务。您可以存储scheduleAtFixedRate方法返回的未来,并在离开活动之前取消它,同时保持执行程序的运行。恢复活动时重新安排任务。

或者:在离开活动时关闭执行者,并在活动恢复时创建一个新执行者。