@@ -9,6 +9,7 @@ import androidx.test.filters.SmallTest
9
9
import com.google.common.truth.Truth.assertThat
10
10
import java.util.concurrent.CountDownLatch
11
11
import java.util.concurrent.TimeUnit
12
+ import me.ycdev.android.lib.common.utils.MainHandler
12
13
import me.ycdev.android.lib.common.utils.ThreadUtils
13
14
import org.junit.Test
14
15
import org.junit.runner.RunWith
@@ -112,7 +113,7 @@ class AsyncTaskQueueTest {
112
113
val latch = CountDownLatch (count)
113
114
val countTask = CountTask (Runnable { latch.countDown() })
114
115
for (i in 0 until count) {
115
- taskQueue.addTask(countTask, 200 )
116
+ taskQueue.addTask(200 , countTask )
116
117
}
117
118
118
119
latch.await()
@@ -126,7 +127,7 @@ class AsyncTaskQueueTest {
126
127
taskQueue.setWorkerThreadAutoQuitDelay(AsyncTaskQueue .WORKER_THREAD_AUTO_QUIT_DELAY_MIN )
127
128
128
129
val countTask = CountTask (null )
129
- taskQueue.addTask(countTask, 200 )
130
+ taskQueue.addTask(200 , countTask )
130
131
taskQueue.removeTask(countTask)
131
132
132
133
SystemClock .sleep(500 )
@@ -148,15 +149,18 @@ class AsyncTaskQueueTest {
148
149
val countTask = CountTask (null )
149
150
val count = 100
150
151
for (i in 0 until count) {
151
- taskQueue.addTask(countTask, 100 )
152
+ taskQueue.addTask(100 , countTask )
152
153
}
153
154
taskQueue.removeTask(countTask)
154
155
155
- // now, let the task go
156
- guardLatch.countDown()
156
+ // make sure all messages in main looper had been processed
157
+ MainHandler .post {
158
+ // now, let the guard task go
159
+ guardLatch.countDown()
160
+ }
157
161
158
162
// add one more task
159
- taskQueue.addTask(countTask, 100 )
163
+ taskQueue.addTask(100 , countTask )
160
164
161
165
// make sure the previous tasks will be executed
162
166
waitForTasksDone(taskQueue, 100 )
@@ -176,7 +180,7 @@ class AsyncTaskQueueTest {
176
180
val countTask = CountTask (Runnable { latch.countDown() })
177
181
for (i in 0 until count) {
178
182
taskQueue.removeTask(countTask)
179
- taskQueue.addTask(countTask, 200 )
183
+ taskQueue.addTask(200 , countTask )
180
184
}
181
185
182
186
// make sure the previous tasks will be executed
@@ -191,26 +195,27 @@ class AsyncTaskQueueTest {
191
195
val guardTask = Runnable {
192
196
guardLatch.countDown()
193
197
}
194
- taskQueue.addTask(guardTask, delay )
198
+ taskQueue.addTask(delay, guardTask )
195
199
guardLatch.await()
196
200
}
197
201
198
202
@Test
199
203
@LargeTest
200
204
@Throws(InterruptedException ::class )
201
205
fun setWorkerThreadAutoQuitDelay_normal () {
202
- val autoQuitDelay = (20 * 1000 ).toLong()
206
+ val autoQuitDelay = (10 * 1000 ).toLong()
203
207
val taskQueue = AsyncTaskQueue (TAG )
204
208
taskQueue.setWorkerThreadAutoQuitDelay(autoQuitDelay)
205
209
206
210
val latch = CountDownLatch (1 )
207
- taskQueue.addTask(Runnable { latch.countDown() }, 100 )
211
+ taskQueue.addTask(100 , Runnable { latch.countDown() })
208
212
latch.await()
209
213
210
214
// check if task thread already quited
211
215
assertThat(taskQueue.taskHandler).isNotNull()
212
- SystemClock .sleep(autoQuitDelay + 100 )
213
- assertThat(taskQueue.taskHandler).isNull()
216
+ while (taskQueue.taskHandler != null ) {
217
+ SystemClock .sleep(100 )
218
+ }
214
219
}
215
220
216
221
@Test
@@ -221,7 +226,7 @@ class AsyncTaskQueueTest {
221
226
taskQueue.setWorkerThreadAutoQuitDelay(0 )
222
227
223
228
val latch = CountDownLatch (1 )
224
- taskQueue.addTask(Runnable { latch.countDown() }, 100 )
229
+ taskQueue.addTask(100 , Runnable { latch.countDown() })
225
230
latch.await()
226
231
227
232
// check if task thread already quited
@@ -312,7 +317,7 @@ class AsyncTaskQueueTest {
312
317
assertThat(latch.count).isEqualTo(taskCount - i)
313
318
latch.countDown()
314
319
}
315
- taskQueue.addTask(task, taskDelay )
320
+ taskQueue.addTask(taskDelay, task )
316
321
}
317
322
}
318
323
}
0 commit comments