privatestaticclassSerialExecutorimplementsExecutor{finalArrayDequemTasks=newArrayDeque();RunnablemActive;publicsynchronizedvoidexecute(finalRunnabler){mTasks.offer(newRunnable(){publicvoidrun(){try{r.run();}finally{scheduleNext();}}});if(mActive==null){scheduleNext();}}protectedsynchronizedvoids