我在查看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()将其关闭。但是,下次在加载应用程序后创建此活动时,我会得到异常。
答案 0 :(得分:0)
执行程序关闭后,您无法提交新任务。您可以存储scheduleAtFixedRate
方法返回的未来,并在离开活动之前取消它,同时保持执行程序的运行。恢复活动时重新安排任务。
或者:在离开活动时关闭执行者,并在活动恢复时创建一个新执行者。