gitextract_r5lsl1_p/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── .idea/ │ └── copyright/ │ ├── profiles_settings.xml │ └── xuexiang.xml ├── JitPackUpload.gradle ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── channel │ ├── debug.jks │ ├── multiple-channel.gradle │ ├── proguard-rules.pro │ ├── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── xuexiang/ │ │ │ └── xtaskdemo/ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── xuexiang/ │ │ │ │ └── xtaskdemo/ │ │ │ │ ├── MyApp.java │ │ │ │ ├── activity/ │ │ │ │ │ └── MainActivity.java │ │ │ │ ├── core/ │ │ │ │ │ ├── BaseActivity.java │ │ │ │ │ ├── BaseContainerFragment.java │ │ │ │ │ ├── BaseFragment.java │ │ │ │ │ ├── BaseSimpleListFragment.java │ │ │ │ │ └── SimpleListAdapter.java │ │ │ │ ├── fragment/ │ │ │ │ │ ├── CustomTaskFragment.java │ │ │ │ │ ├── MainFragment.java │ │ │ │ │ ├── TestThreadPoolFragment.java │ │ │ │ │ ├── UseCaseFragment.java │ │ │ │ │ ├── XTaskStepFragment.java │ │ │ │ │ ├── XTaskThreadFragment.java │ │ │ │ │ ├── task/ │ │ │ │ │ │ ├── Job.java │ │ │ │ │ │ ├── JobTask.java │ │ │ │ │ │ ├── StepATask.java │ │ │ │ │ │ └── StepBTask.java │ │ │ │ │ └── usecase/ │ │ │ │ │ ├── AppStartFragment.java │ │ │ │ │ ├── ComplexBusinessFragment.java │ │ │ │ │ ├── ConcurrentProcessFragment.java │ │ │ │ │ ├── appstart/ │ │ │ │ │ │ ├── job/ │ │ │ │ │ │ │ ├── AbstractMockJob.java │ │ │ │ │ │ │ ├── LongTimeJob.java │ │ │ │ │ │ │ ├── SingleJob.java │ │ │ │ │ │ │ └── TopPriorityJob.java │ │ │ │ │ │ └── task/ │ │ │ │ │ │ ├── AsyncInitTask.java │ │ │ │ │ │ └── MainInitTask.java │ │ │ │ │ ├── business/ │ │ │ │ │ │ ├── entity/ │ │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ │ ├── ProductFactory.java │ │ │ │ │ │ │ └── ProductInfo.java │ │ │ │ │ │ ├── processor/ │ │ │ │ │ │ │ ├── AbstractProcessor.java │ │ │ │ │ │ │ ├── GetProductInfoProcessor.java │ │ │ │ │ │ │ ├── GivePriceProcessor.java │ │ │ │ │ │ │ ├── PublicProductProcessor.java │ │ │ │ │ │ │ └── SearchFactoryProcessor.java │ │ │ │ │ │ └── task/ │ │ │ │ │ │ ├── AbstractTask.java │ │ │ │ │ │ ├── GetProductInfoTask.java │ │ │ │ │ │ ├── GivePriceTask.java │ │ │ │ │ │ ├── ProductTaskConstants.java │ │ │ │ │ │ ├── PublicProductTask.java │ │ │ │ │ │ └── SearchFactoryTask.java │ │ │ │ │ └── concurrent/ │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── BriefInfo.java │ │ │ │ │ │ ├── FactoryInfo.java │ │ │ │ │ │ ├── PriceInfo.java │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── PromotionInfo.java │ │ │ │ │ │ └── RichInfo.java │ │ │ │ │ ├── processor/ │ │ │ │ │ │ ├── GetBriefInfoProcessor.java │ │ │ │ │ │ ├── GetFactoryInfoProcessor.java │ │ │ │ │ │ ├── GetPriceInfoProcessor.java │ │ │ │ │ │ ├── GetPromotionInfoProcessor.java │ │ │ │ │ │ └── GetRichInfoProcessor.java │ │ │ │ │ └── task/ │ │ │ │ │ ├── GetBriefInfoTask.java │ │ │ │ │ ├── GetFactoryInfoTask.java │ │ │ │ │ ├── GetPriceInfoTask.java │ │ │ │ │ ├── GetPromotionInfoTask.java │ │ │ │ │ └── GetRichInfoTask.java │ │ │ │ └── utils/ │ │ │ │ ├── XToastUtils.java │ │ │ │ ├── sdkinit/ │ │ │ │ │ ├── UMengInit.java │ │ │ │ │ └── XBasicLibInit.java │ │ │ │ └── service/ │ │ │ │ └── JsonSerializationService.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── drawable-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── layout/ │ │ │ │ ├── adapter_item_simple_list_2.xml │ │ │ │ ├── fragment_usecase_compare.xml │ │ │ │ └── fragment_usecase_template.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ └── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ ├── styles.xml │ │ │ └── styles_widget.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── xuexiang/ │ │ └── xtaskdemo/ │ │ └── ExampleUnitTest.java │ └── x-library-simple.gradle ├── art/ │ └── xtask.mdj ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── settings.gradle ├── versions.gradle ├── xtask-core/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── xuexiang/ │ └── xtask/ │ ├── XTask.java │ ├── api/ │ │ ├── TaskChainEngine.java │ │ └── step/ │ │ ├── ConcurrentGroupTaskStep.java │ │ ├── SerialGroupTaskStep.java │ │ ├── SimpleTaskStep.java │ │ └── XTaskStep.java │ ├── core/ │ │ ├── ITaskChainCallback.java │ │ ├── ITaskChainEngine.java │ │ ├── ThreadType.java │ │ ├── param/ │ │ │ ├── IDataStore.java │ │ │ ├── ITaskParam.java │ │ │ ├── ITaskResult.java │ │ │ └── impl/ │ │ │ ├── MapDataStore.java │ │ │ ├── TaskParam.java │ │ │ └── TaskResult.java │ │ └── step/ │ │ ├── IGroupTaskStep.java │ │ ├── ITaskStep.java │ │ ├── ITaskStepController.java │ │ ├── ITaskStepHandler.java │ │ ├── ITaskStepLifecycle.java │ │ └── impl/ │ │ ├── AbstractGroupTaskStep.java │ │ ├── AbstractTaskStep.java │ │ ├── AutoDestroyTaskChainCallback.java │ │ ├── AutoNotifyTaskStepHandler.java │ │ ├── TaskChainCallbackAdapter.java │ │ └── TaskCommand.java │ └── utils/ │ ├── CancellerPoolUtils.java │ ├── CommonUtils.java │ └── TaskUtils.java └── xtask-thread/ ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src/ └── main/ ├── AndroidManifest.xml └── java/ └── com/ └── xuexiang/ └── xtask/ ├── logger/ │ ├── ILogger.java │ ├── LogcatLogger.java │ └── TaskLogger.java └── thread/ ├── XTaskExecutor.java ├── executor/ │ ├── ICategoryExecutorCore.java │ ├── IExecutorCore.java │ ├── IPriorityExecutorCore.java │ ├── IScheduledExecutorCore.java │ └── impl/ │ ├── CategoryExecutorCore.java │ ├── PriorityExecutorCore.java │ └── ScheduledExecutorCore.java ├── pool/ │ ├── DefaultScheduledThreadPoolExecutor.java │ ├── DefaultThreadPoolExecutor.java │ ├── PriorityThreadPoolExecutor.java │ ├── TaskRecordPolicy.java │ ├── TaskThreadFactory.java │ ├── base/ │ │ ├── BaseScheduledThreadPoolExecutor.java │ │ └── BaseThreadPoolExecutor.java │ └── cancel/ │ ├── CancelHandlerRunnable.java │ ├── ICancelable.java │ ├── ICanceller.java │ ├── ICancellerPool.java │ ├── IFuture.java │ ├── IScheduledFuture.java │ └── TaskCancellerPool.java ├── priority/ │ ├── IPriority.java │ ├── IPriorityCallable.java │ ├── IPriorityComparable.java │ ├── IPriorityFuture.java │ ├── IPriorityRunnable.java │ ├── IPriorityStrategy.java │ └── impl/ │ ├── DefaultPriorityCallable.java │ ├── DefaultPriorityFuture.java │ ├── DefaultPriorityRunnable.java │ ├── DefaultPriorityStrategy.java │ └── Priority.java └── utils/ ├── CancelUtils.java ├── ExecutorUtils.java └── PriorityUtils.java