0

ScheduledThreadPoolExecutorを見つめているときに、次の例外が発生します。これを使用して、1分ごとにサーバーをポーリングします。

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 に答える