├── .gitignore ├── .idea ├── .name ├── caches │ └── build_file_checksums.ser ├── codeStyles │ └── Project.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── AdvancedAsyncTask.iml ├── README.md ├── build.gradle ├── demo ├── .gitignore ├── build.gradle ├── demo.iml ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── net │ │ └── sjava │ │ └── advancedasynctask │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── net │ │ └── sjava │ │ └── advancedasynctask │ │ └── demo │ │ ├── DefaultPriorityTask.java │ │ ├── DefaultPriorityTaskWithTimer.java │ │ ├── HighPriorityTask.java │ │ └── MainActivity.java │ └── res │ ├── layout │ └── activity_main.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── dist_library_bintray.bat ├── dist_library_check.bat ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle ├── library.iml ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── net │ │ └── sjava │ │ └── advancedasynctask │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── net │ │ └── sjava │ │ └── advancedasynctask │ │ ├── AdvancedAsyncTask.java │ │ ├── AdvancedAsyncTaskCancelTimer.java │ │ ├── AdvancedAsyncTaskCompat.java │ │ ├── AdvancedAsyncTaskResult.java │ │ ├── AdvancedAsyncTaskStatus.java │ │ ├── AdvancedSerialExecutor.java │ │ ├── AdvancedThreadPoolExecutorFactory.java │ │ ├── InternalHandler.java │ │ ├── Messages.java │ │ ├── QueuePriority.java │ │ ├── ThreadPriority.java │ │ └── WorkerRunnable.java │ └── res │ └── values │ └── strings.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | .DS_Store 6 | /build 7 | /captures 8 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | AdvancedAsyncTask -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcsong/AdvancedAsyncTask/a4a69f2d29f4e3316131f176fc60a1f79c995d98/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | xmlns:android 14 | 15 | ^$ 16 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 | xmlns:.* 25 | 26 | ^$ 27 | 28 | 29 | BY_NAME 30 | 31 |
32 |
33 | 34 | 35 | 36 | .*:id 37 | 38 | http://schemas.android.com/apk/res/android 39 | 40 | 41 | 42 |
43 |
44 | 45 | 46 | 47 | .*:name 48 | 49 | http://schemas.android.com/apk/res/android 50 | 51 | 52 | 53 |
54 |
55 | 56 | 57 | 58 | name 59 | 60 | ^$ 61 | 62 | 63 | 64 |
65 |
66 | 67 | 68 | 69 | style 70 | 71 | ^$ 72 | 73 | 74 | 75 |
76 |
77 | 78 | 79 | 80 | .* 81 | 82 | ^$ 83 | 84 | 85 | BY_NAME 86 | 87 |
88 |
89 | 90 | 91 | 92 | .* 93 | 94 | http://schemas.android.com/apk/res/android 95 | 96 | 97 | ANDROID_ATTRIBUTE_ORDER 98 | 99 |
100 |
101 | 102 | 103 | 104 | .* 105 | 106 | .* 107 | 108 | 109 | BY_NAME 110 | 111 |
112 |
113 |
114 |
115 |
116 |
-------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AdvancedAsyncTask.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AdvancedAsyncTask 2 | [![Release](https://img.shields.io/badge/jcenter-1.1.0-blue.svg)](https://bintray.com/mcsong/maven/advancedasynctask) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-AdvancedAsyncTask-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/2506) 3 | 4 | 5 | Buy Me a Coffee at ko-fi.com 6 | 7 | 8 | ## Overview 9 | This library is enhanced for using AsyncTask api. 10 | 11 | ## Features 12 | - You can handle task's priority in task queue(from fifo queue to priority queue). 13 | - You can handle running thread's priority for task. 14 | - You can set a timer for task. 15 | 16 | ## Gradle & Maven 17 | Gradle 18 | ```groovy 19 | dependencies { 20 | implementation 'net.sjava:advancedasynctask:1.1.0' 21 | } 22 | ``` 23 | 24 | Maven 25 | ```xml 26 | 27 | net.sjava 28 | advancedasynctask 29 | 1.1.0 30 | 31 | ``` 32 | 33 | ## Usage 34 | ### Example 1 35 | - Queue priority : default 36 | - Running thread priority : default 37 | - Timout : not used 38 | ```java 39 | class DefaultPriorityTask extends AdvancedAsyncTask { 40 | private String TAG_NAME = DefaultPriorityTask.class.getSimpleName(); 41 | 42 | private int number; 43 | public DefaultPriorityTask(int number) { 44 | super(QueuePriority.MEDIUM, ThreadPriority.MEDIUM); 45 | this.number = number; 46 | } 47 | 48 | @Override 49 | protected String doInBackground(String... params) { 50 | try { 51 | //Log.i(NAME, number + " doInBackground run"); 52 | Thread.sleep(100); 53 | } catch (Exception e) { 54 | e.printStackTrace(); 55 | } 56 | 57 | return this.number + " : finished"; 58 | } 59 | 60 | @Override 61 | protected void onPostExecute(String result) { 62 | Log.i(TAG_NAME, result + " : default : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 63 | } 64 | } 65 | ``` 66 | 67 | ``` 68 | 01-04 15:58:55.264 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 14 : finished : default : size : 46 69 | 01-04 15:58:55.265 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 55 : finished : default : size : 45 70 | 01-04 15:58:55.269 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 13 : finished : default : size : 44 71 | 01-04 15:58:55.270 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 53 : finished : default : size : 43 72 | 01-04 15:58:55.366 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 171 : finished : default : size : 42 73 | 01-04 15:58:55.366 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 90 : finished : default : size : 41 74 | 01-04 15:58:55.371 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 177 : finished : default : size : 39 75 | 01-04 15:58:55.372 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 179 : finished : default : size : 39 76 | 01-04 15:58:55.466 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 6 : finished : default : size : 38 77 | 01-04 15:58:55.467 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 183 : finished : default : size : 37 78 | 01-04 15:58:55.472 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 186 : finished : default : size : 36 79 | 01-04 15:58:55.473 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 94 : finished : default : size : 36 80 | 01-04 15:58:55.569 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 190 : finished : default : size : 33 81 | 01-04 15:58:55.570 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 25 : finished : default : size : 33 82 | 01-04 15:58:55.573 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 191 : finished : default : size : 32 83 | 01-04 15:58:55.575 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 193 : finished : default : size : 32 84 | 01-04 15:58:55.671 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 30 : finished : default : size : 30 85 | 01-04 15:58:55.671 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 27 : finished : default : size : 29 86 | 01-04 15:58:55.675 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 197 : finished : default : size : 29 87 | 01-04 15:58:55.677 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 199 : finished : default : size : 27 88 | 01-04 15:58:55.772 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 158 : finished : default : size : 26 89 | 01-04 15:58:55.773 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 15 : finished : default : size : 26 90 | 01-04 15:58:55.776 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 159 : finished : default : size : 25 91 | 01-04 15:58:55.778 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 161 : finished : default : size : 23 92 | 01-04 15:58:55.875 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 162 : finished : default : size : 21 93 | 01-04 15:58:55.876 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 166 : finished : default : size : 21 94 | 01-04 15:58:55.878 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 167 : finished : default : size : 20 95 | 01-04 15:58:55.879 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 169 : finished : default : size : 19 96 | 01-04 15:58:55.978 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 170 : finished : default : size : 18 97 | 01-04 15:58:55.978 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 175 : finished : default : size : 16 98 | 01-04 15:58:55.979 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 178 : finished : default : size : 16 99 | 01-04 15:58:55.980 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 182 : finished : default : size : 15 100 | 01-04 15:58:56.080 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 185 : finished : default : size : 12 101 | 01-04 15:58:56.080 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 189 : finished : default : size : 12 102 | 01-04 15:58:56.081 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 98 : finished : default : size : 11 103 | 01-04 15:58:56.081 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 195 : finished : default : size : 11 104 | 01-04 15:58:56.182 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 157 : finished : default : size : 11 105 | 01-04 15:58:56.182 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 82 : finished : default : size : 8 106 | 01-04 15:58:56.182 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 198 : finished : default : size : 7 107 | 01-04 15:58:56.183 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 165 : finished : default : size : 7 108 | 01-04 15:58:56.283 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 174 : finished : default : size : 5 109 | 01-04 15:58:56.283 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 86 : finished : default : size : 3 110 | 01-04 15:58:56.283 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 181 : finished : default : size : 3 111 | 01-04 15:58:56.283 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 50 : finished : default : size : 3 112 | 01-04 15:58:56.385 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 42 : finished : default : size : 2 113 | 01-04 15:58:56.385 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 194 : finished : default : size : 0 114 | 01-04 15:58:56.386 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 22 : finished : default : size : 0 115 | 01-04 15:58:56.386 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 173 : finished : default : size : 0 116 | 01-04 15:58:56.487 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 155 : finished : default : size : 0 117 | 01-04 15:58:56.487 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 46 : finished : default : size : 0 118 | 01-04 15:58:56.489 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTask: 187 : finished : default : size : 0 119 | ``` 120 | 121 | ### Example 2 122 | - Queue priority : high 123 | - Running thread priority : high 124 | - Timeout : not used 125 | 126 | ```java 127 | class HighPriorityTask extends AdvancedAsyncTask { 128 | private String TAG_NAME = HighPriorityTask.class.getSimpleName(); 129 | private int number; 130 | 131 | public HighPriorityTask(int number) { 132 | super(QueuePriority.HIGH, ThreadPriority.HIGH); 133 | this.number = number; 134 | } 135 | 136 | @Override 137 | protected String doInBackground(String... params) { 138 | try { 139 | //Log.i(NAME, number + " doInBackground run"); 140 | Thread.sleep(100); 141 | 142 | } catch (Exception e) { 143 | e.printStackTrace(); 144 | } 145 | 146 | return this.number + " : finished"; 147 | } 148 | 149 | @Override 150 | protected void onPostExecute(String result) { 151 | Log.i(TAG_NAME, result + " : high : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 152 | 153 | } 154 | } 155 | ``` 156 | 157 | ### Example 3 158 | - Queue priority : default 159 | - Running thread priority : default 160 | - Timout : used 161 | ```java 162 | class DefaultPriorityTaskWithTimer extends AdvancedAsyncTask { 163 | private String TAG_NAME = DefaultPriorityTaskWithTimer.class.getSimpleName(); 164 | 165 | private int number; 166 | public DefaultPriorityTaskWithTimer(int number, AdvancedAsyncTaskCancelTimer timer) { 167 | super(QueuePriority.MEDIUM, ThreadPriority.MEDIUM, timer); 168 | this.number = number; 169 | } 170 | 171 | @Override 172 | protected String doInBackground(String... params) { 173 | try { 174 | //Log.i(NAME, number + " doInBackground run"); 175 | Thread.sleep(2000); 176 | } catch (Exception e) { 177 | e.printStackTrace(); 178 | } 179 | 180 | return this.number + " : finished"; 181 | } 182 | 183 | @Override 184 | protected void onCancelled() { 185 | super.onCancelled(); 186 | Log.i(TAG_NAME, number + " cancelled"); 187 | } 188 | 189 | @Override 190 | protected void onCancelled(String result) { 191 | super.onCancelled(result); 192 | 193 | Log.i(TAG_NAME, number + " cancelled result : " + result); 194 | } 195 | 196 | @Override 197 | protected void onPostExecute(String result) { 198 | Log.i(TAG_NAME, result + " : default : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 199 | } 200 | } 201 | ``` 202 | 203 | ``` 204 | 01-04 15:59:51.281 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 7 cancelled 205 | 01-04 15:59:51.281 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 7 cancelled result : null 206 | 01-04 15:59:51.294 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 17 cancelled 207 | 01-04 15:59:51.295 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 17 cancelled result : null 208 | 01-04 15:59:51.295 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 18 cancelled 209 | 01-04 15:59:51.295 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 18 cancelled result : null 210 | 01-04 15:59:51.303 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 19 cancelled 211 | 01-04 15:59:51.303 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 19 cancelled result : null 212 | 01-04 15:59:51.303 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 20 cancelled 213 | 01-04 15:59:51.303 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 20 cancelled result : null 214 | 01-04 15:59:51.309 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 34 cancelled 215 | 01-04 15:59:51.309 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 34 cancelled result : null 216 | 01-04 15:59:51.309 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 35 cancelled 217 | 01-04 15:59:51.309 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 35 cancelled result : null 218 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 6 cancelled 219 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 6 cancelled result : null 220 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 8 cancelled 221 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 8 cancelled result : null 222 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 9 cancelled 223 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 9 cancelled result : null 224 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 10 cancelled 225 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 10 cancelled result : null 226 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 11 cancelled 227 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 11 cancelled result : null 228 | 01-04 15:59:51.313 19847-19847/net.sjava.advancedasynctask.demo I/DefaultPriorityTaskWithTimer: 12 cancelled 229 | ``` 230 | 231 | ## License 232 | 233 | Copyright 2019 Justin Song 234 | 235 | Licensed under the Apache License, Version 2.0 (the "License"); 236 | you may not use this file except in compliance with the License. 237 | You may obtain a copy of the License at 238 | 239 | http://www.apache.org/licenses/LICENSE-2.0 240 | 241 | Unless required by applicable law or agreed to in writing, software 242 | distributed under the License is distributed on an "AS IS" BASIS, 243 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 244 | See the License for the specific language governing permissions and 245 | limitations under the License. 246 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | google() 7 | } 8 | 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.6.3' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | jcenter() 20 | google() 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /demo/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | 6 | defaultConfig { 7 | applicationId 'net.sjava.advancedasynctask.demo' 8 | minSdkVersion 15 9 | targetSdkVersion 29 10 | versionCode 1 11 | versionName "1.0" 12 | } 13 | 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | compileOptions { 22 | encoding "UTF-8" 23 | sourceCompatibility 1.8 24 | targetCompatibility 1.8 25 | } 26 | 27 | productFlavors { 28 | } 29 | } 30 | 31 | dependencies { 32 | implementation fileTree(dir: 'libs', include: ['*.jar']) 33 | implementation 'net.sjava:advancedasynctask:1.1.0' 34 | implementation 'androidx.appcompat:appcompat:1.1.0' 35 | } 36 | -------------------------------------------------------------------------------- /demo/demo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /demo/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\dev\android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /demo/src/androidTest/java/net/sjava/advancedasynctask/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package net.sjava.advancedasynctask; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /demo/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /demo/src/main/java/net/sjava/advancedasynctask/demo/DefaultPriorityTask.java: -------------------------------------------------------------------------------- 1 | package net.sjava.advancedasynctask.demo; 2 | 3 | import android.util.Log; 4 | import net.sjava.advancedasynctask.AdvancedAsyncTask; 5 | import net.sjava.advancedasynctask.AdvancedThreadPoolExecutorFactory; 6 | import net.sjava.advancedasynctask.QueuePriority; 7 | import net.sjava.advancedasynctask.ThreadPriority; 8 | 9 | /** 10 | * 11 | * 12 | * Created by mcsong@gmail.com on 2015-09-14. 13 | */ 14 | 15 | class DefaultPriorityTask extends AdvancedAsyncTask { 16 | private String TAG_NAME = DefaultPriorityTask.class.getSimpleName(); 17 | 18 | private int number; 19 | 20 | public DefaultPriorityTask(int number) { 21 | super(QueuePriority.MEDIUM, ThreadPriority.MEDIUM); 22 | 23 | this.number = number; 24 | } 25 | 26 | @Override 27 | protected String doInBackground(String... params) { 28 | try { 29 | //Log.i(NAME, number + " doInBackground run"); 30 | Thread.sleep(100); 31 | } catch (Exception e) { 32 | e.printStackTrace(); 33 | } 34 | 35 | return this.number + " : finished"; 36 | } 37 | 38 | @Override 39 | protected void onPostExecute(String result) { 40 | Log.i(TAG_NAME, result + " : default : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 41 | } 42 | } -------------------------------------------------------------------------------- /demo/src/main/java/net/sjava/advancedasynctask/demo/DefaultPriorityTaskWithTimer.java: -------------------------------------------------------------------------------- 1 | package net.sjava.advancedasynctask.demo; 2 | 3 | import android.util.Log; 4 | import net.sjava.advancedasynctask.*; 5 | 6 | /** 7 | * 8 | * Created by mcsong@gmail.com on 2015-09-14. 9 | */ 10 | 11 | class DefaultPriorityTaskWithTimer extends AdvancedAsyncTask { 12 | private String TAG_NAME = DefaultPriorityTaskWithTimer.class.getSimpleName(); 13 | 14 | private int number; 15 | public DefaultPriorityTaskWithTimer(int number, AdvancedAsyncTaskCancelTimer timer) { 16 | super(QueuePriority.MEDIUM, ThreadPriority.MEDIUM, timer); 17 | 18 | this.number = number; 19 | } 20 | 21 | @Override 22 | protected String doInBackground(String... params) { 23 | try { 24 | //Log.i(NAME, number + " doInBackground run"); 25 | Thread.sleep(2000); 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | } 29 | 30 | return this.number + " : finished"; 31 | } 32 | 33 | @Override 34 | protected void onCancelled() { 35 | super.onCancelled(); 36 | 37 | Log.i(TAG_NAME, number + " cancelled"); 38 | } 39 | 40 | @Override 41 | protected void onCancelled(String result) { 42 | super.onCancelled(result); 43 | 44 | Log.i(TAG_NAME, number + " cancelled result : " + result); 45 | } 46 | 47 | @Override 48 | protected void onPostExecute(String result) { 49 | Log.i(TAG_NAME, result + " : default : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 50 | } 51 | } -------------------------------------------------------------------------------- /demo/src/main/java/net/sjava/advancedasynctask/demo/HighPriorityTask.java: -------------------------------------------------------------------------------- 1 | package net.sjava.advancedasynctask.demo; 2 | 3 | import android.util.Log; 4 | import net.sjava.advancedasynctask.AdvancedAsyncTask; 5 | import net.sjava.advancedasynctask.AdvancedThreadPoolExecutorFactory; 6 | import net.sjava.advancedasynctask.QueuePriority; 7 | import net.sjava.advancedasynctask.ThreadPriority; 8 | 9 | /** 10 | * 11 | * Created by mcsong@gmail.com on 2015-09-14. 12 | */ 13 | class HighPriorityTask extends AdvancedAsyncTask { 14 | private String TAG_NAME = HighPriorityTask.class.getSimpleName(); 15 | private int number; 16 | 17 | public HighPriorityTask(int number) { 18 | super(QueuePriority.HIGH, ThreadPriority.HIGH); 19 | 20 | this.number = number; 21 | } 22 | 23 | @Override 24 | protected String doInBackground(String... params) { 25 | try { 26 | //Log.i(NAME, number + " doInBackground run"); 27 | Thread.sleep(100); 28 | 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | 33 | return this.number + " : finished"; 34 | } 35 | 36 | @Override 37 | protected void onPostExecute(String result) { 38 | Log.i(TAG_NAME, result + " : high : size : " + AdvancedThreadPoolExecutorFactory.getInstance().getQueueCount()); 39 | 40 | } 41 | } -------------------------------------------------------------------------------- /demo/src/main/java/net/sjava/advancedasynctask/demo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package net.sjava.advancedasynctask.demo; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | import android.os.Bundle; 5 | import android.util.Log; 6 | import android.view.View; 7 | import android.widget.Button; 8 | import android.widget.Toast; 9 | import net.sjava.advancedasynctask.AdvancedAsyncTask; 10 | import net.sjava.advancedasynctask.AdvancedAsyncTaskCancelTimer; 11 | import net.sjava.advancedasynctask.AdvancedAsyncTaskCompat; 12 | 13 | /** 14 | * 15 | * Created by mcsong@gmail.com on 2015-09-14. 16 | */ 17 | public class MainActivity extends AppCompatActivity { 18 | static String TAG_NAME = MainActivity.class.getSimpleName(); 19 | 20 | @Override 21 | protected void onCreate(Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | setContentView(R.layout.activity_main); 24 | 25 | Button btn01 = (Button) findViewById(R.id.button01); 26 | btn01.setOnClickListener(new View.OnClickListener() { 27 | @Override 28 | public void onClick(View v) { 29 | Log.i(TAG_NAME, "Priority task test"); 30 | 31 | Toast.makeText(MainActivity.this, "Priority task test clicked", Toast.LENGTH_SHORT).show(); 32 | 33 | for (int i = 1; i < 200; i++) { 34 | int vv = i % 4; 35 | 36 | if (vv == 0) { 37 | AdvancedAsyncTaskCompat.executeParallel(new HighPriorityTask(i), ""); 38 | } else { 39 | AdvancedAsyncTaskCompat.executeParallel(new DefaultPriorityTask(i), ""); 40 | } 41 | } 42 | } 43 | }); 44 | 45 | Button btn02 = (Button)findViewById(R.id.button02); 46 | btn02.setOnClickListener(new View.OnClickListener() { 47 | 48 | @Override 49 | public void onClick(View v) { 50 | Log.i(TAG_NAME, "TimerTask test"); 51 | 52 | Toast.makeText(MainActivity.this, "TimerTask test clicked", Toast.LENGTH_SHORT).show(); 53 | 54 | for (int i = 2; i < 200; i++) { 55 | new DefaultPriorityTaskWithTimer(i, new AdvancedAsyncTaskCancelTimer(1000, 500)).executeOnExecutor(AdvancedAsyncTask.getThreadPoolExecutor(), ""); 56 | } 57 | 58 | } 59 | }); 60 | 61 | 62 | 63 | } 64 | 65 | } 66 | 67 | -------------------------------------------------------------------------------- /demo/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 |