0

我在盯着 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()将其关闭。但是,当下次在加载应用程序后创建此活动时,我得到了异常。

4

1 回答 1

0

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

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

于 2012-11-15T07:56:23.837 回答