1

I am refreshing my ListView after every 2 seconds using the Async Task. To do this , I am using ScheduledExecutorService to do the same task after every 2 seconds. But I am getting this wired problem ..RejectedExecutionException..I also refered to some posts like

RejectedExecutionException from AsyncTask, but haven't hit limits, Avoiding RejectedExecutionException in Android 4.4 when app uses list

did't get the solution. Please help .. Thnx in advance :)

Error stack:

java.util.concurrent.RejectedExecutionException: Task com.stripe.android.compat.AsyncTask$3@23e7c86b rejected from java.util.concurrent.ThreadPoolExecutor@16831fc8[Running, pool size = 1, active threads = 1, queued tasks = 10, completed tasks = 3]
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793)
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
    at com.stripe.android.compat.AsyncTask.executeOnExecutor(AsyncTask.java:536)
    at com.stripe.android.compat.AsyncTask.execute(AsyncTask.java:481)
    at com.cabbooking.passengerapp.screens.BookACabFragment$3$1.run(BookACabFragment.java:492)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

I am starting my scheduler in onResume like this:

public void startTimeScheduledExecutorService(){
        Toast.makeText(getActivity(), "start scheduler", Toast.LENGTH_SHORT).show();
        this.startGetCabs="startGetCabs";
                        scheduler = Executors.newScheduledThreadPool(1);
                        scheduledFuture =   scheduler.scheduleAtFixedRate(new Runnable() {

                            public void run() {
                                getActivity().runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        try {
                                            AsyncTask.class.getMethod("setDefaultExecutor", Executor.class).invoke(null, AsyncTask.SERIAL_EXECUTOR);
                                            GetOnlineDriversNoBar g = new GetOnlineDriversNoBar();
                                            g.execute();
                                        } catch (IllegalAccessException e) {
                                            e.printStackTrace();
                                        } catch (InvocationTargetException e) {
                                            e.printStackTrace();
                                        } catch (NoSuchMethodException e) {
                                            e.printStackTrace();
                                        }

                                    }
                                });




//

            }
        },0, 2000, TimeUnit.MILLISECONDS);

    }

And i am stopping my scheduler in onPause and onStop like this:

   public void stopTimeScheduledExecutorService() {
        if(startGetCabs.equalsIgnoreCase("startGetCabs")){
        if (!scheduledFuture.isCancelled()) {
            scheduledFuture.cancel(true);


           // scheduler.shutdown();
         Toast.makeText(getActivity(), "shutdown scheduler", Toast.LENGTH_SHORT).show();

            //  timer = null;
        }}
    }
Community
  • 1
  • 1

0 Answers0