Testing asynchronous calls it is not always an easy task.
Let's take as reference this simple interface:
The first thing is: how can we test it through an Android unit test class?
We can't test the value inside the callback. Infact, an async call runs usually in worker thread. When the thread has done some computation, it calls the callback. The simplest case is when the callback is run in the same worker thread.
But still, we need to find a way to block the main thread, otherwise the test class will simply don't wait before the callback is called! Remember that the method testDoSync() is called in the main thread.
We can use a semaphore, and make the test method wait until the callback is delivered. Then we can easily test the return value. The Semaphore class has some interesting properties: first, we can use it to put a thread in wait; the acquire() method stops the thread until a resource is available. As we have created the Semaphore with 0 resources available, this will cause the next call to acquire() to stop the thread.
But what if there is the unlikely case that the listener, returns before the acquire() call is made? No worries, as the signal() will simply increment the number of resources available and so the acquire() method will not nlock but will return straight away. Yay, this is for sure a better way to handle threads synchronization that the usual pattern wait-notify!
This is the code that covers this case:
And now, the worst case. Let's imagine that the code run by the worker thread do some stuff, and then it posts the results of its work in the calling thread (for instance through a handler). Then, onValueChanged() will never be called. Why? It is because we needed to stop the main thread. The main thread is a looper thread: normally a thread do some stuff and then it dies. Instead, a thread with a looper processes events by looping continuously. Another thread can post events on it: the events are put in the thread queue and they are processed one at time. If we block the main thread, the event posted by the worker thread will NEVER get processed.
How to handle this case?
We still need to block the main thread. But we need to launch the callback from a secondary thread with the looper.
We will use a facility offered by android: HandlerThread.
It will create a thread with looper for us; then the callback will be called in the secondary thread looper that is not blocked, and from that thread we can release the semaphore of the main thread.
Finally, remember to quit() the thread handler (that will quit the embedded looper too and will cause the death of that thread).
Nice blog having great concept about Android Development Thanks for sharing with us.
ReplyDeleteThanks for your informative article on ios mobile application development. Your article helped me to explore the future of mobile apps developers. Having sound knowledge on mobile application development will help you to float in mobile application development. iOS Training | iOS Training Institutes in Chennai
ReplyDeleteI read your whole blog. Your work is really good and inseparable .
ReplyDeleteSEO services Melbourne | Magento Development Company | web design and development company
Great Article
ReplyDeleteOnline Java Training | Java Training in Chennai | Java Training Institutes in Chennai | Java EE course | Java Course in Chennai | J2EE Training in Chennai | java j2ee training institutes in chennai | Java 360
The blog was absolutely fantastic! Lot of great information which can be helpful in some or the other way. Keep updating the blog, looking forward for more contents...Great job, keep it up..Website Development Bangalore | Web Design Company Bangalore
ReplyDeletevery nice information
ReplyDeletebe projects in chennai
2016 ieee java projects in chennai
ieee projects in chennai
Hey You may like iphone app development company from Bangalore for any types of mobile apps......
ReplyDeleteThanks for your informative article.
ReplyDeletebase-sas training in chennai
nice posting...
ReplyDeletewebsphere training in chennai
very nice information..
ReplyDeletewebshere training in chennai
Great Article....
ReplyDeleteinformatica training in chennai
A nice article here with some useful tips for those who are not used-to comment that frequently. Thanks for this helpful information I agree with all points you have given to us. I will follow all of them.
ReplyDeleteiOS Training in Chennai
your information is really awesome as well as it is very excellent and i got more interesting information from your blog.iOS Training in Chennai
ReplyDeleteNice post, thank you...
ReplyDeleteapp development company Dubai
Android app development Oman
Pretty article! I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing.If you want to apply converted studying for Hadoop Real-Time Training and Live High-Level Knowledge instructor Trained from Hadoop Programme Training Course to reach us
ReplyDeleteHadoop Training in Chennai
Hadoop Training With Placement in Chennai
This comment has been removed by the author.
ReplyDeleteNICE POST! Thanks
ReplyDeleteiPhone app development | android app developer sydney
This comment has been removed by the author.
ReplyDeletejava training institute in bangalore
ReplyDeletedigital marketing training in bangalore
python training in bangalore
aws training in bangalore
devops training institutes in bangalore
Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. Wedding makeup and hair burlington Ontario
ReplyDeleteYour new valuable key points imply much a person like me and extremely more to my office workers. With thanks; from every one of us.
ReplyDeleteBest Java Training Institute Chennai
Very well written blog and I always love to read blogs like these because they offer very good information to readers with very less amount of words....thanks for sharing your info with us and keep sharing.
ReplyDeleteHadoop Training in Chennai
Hadoop Training in Bangalore
Big data training in tambaram
Inspiring writings and I greatly admired what you have to say , I hope you continue to provide new ideas for us all and greetings success always for you..Keep update more information..
ReplyDeletepython training in chennai | python training in bangalore
python online training | python training in pune
python training in chennai | python training in bangalore
python training in tambaram | python training in velachery
Nice post. By reading your blog, i get inspired and this provides some useful information. Thank you for posting this exclusive post for our vision.
ReplyDeleterpa training in Chennai
rpa training in velachery
rpa training in tambaram
rpa training in sholinganallur
rpa training in Chennai
rpa training in pune
rpa online training
rpa training in bangalore
Great post! I am actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information you have Keep up the good work you are doing well.
ReplyDeleteDevops training in tambaram
Devops training in velachery
Devops training in annanagar
DevOps online Training
Devops Training in Chennai
Devops Training in Bangalore
Devops training in sholinganallur
Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
ReplyDeleteData Science with Python training in chenni
Data Science training in chennai
Data science training in velachery
Data science training in tambaram
Data Science training in OMR
Data Science training in anna nagar
Data Science training in chennai
Data science training in Bangalore
It was worth visiting your blog and I have bookmarked your blog. Hope to visit again
ReplyDeletepython training in tambaram
python training in annanagar
python training in OMR
Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. it is really explainable very well and i got more information from your blog.
ReplyDeletejava training in omr | oracle training in chennai
java training in annanagar | java training in chennai
Pleasant Tips..Thanks for Sharing….We keep up hands on approach at work and in the workplace, keeping our business pragmatic, which recommends we can help you with your tree clearing and pruning in an invaluable and fit way.
ReplyDeletepython training in annanagar
python training in chennai
python training in chennai
python training in Bangalore
Hi,
ReplyDeleteThanks for sharing a very interesting article about Asynchronous code testing in Android. This is very useful information for online blog review readers. Keep it up such a nice posting like this.
From,
WondersMind,
Web Development Company Bangalore
Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
ReplyDeleteGood discussion. Thank you.
Anexas
Six Sigma Training in Abu Dhabi
Six Sigma Training in Dammam
Six Sigma Training in Riyadh
Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article. thank you for sharing such a great blog with us.
ReplyDeleteData science training in tambaram | Data Science training in anna nagar
Data Science training in chennai | Data science training in Bangalore
Data Science training in marathahalli | Data Science training in btm
Great thoughts you got there, believe I may possibly try just some of it throughout my daily life.
ReplyDeleteDevops training in sholinganallur
Devops training in velachery
I’m experiencing some small security issues with my latest blog, and I’d like to find something safer. Do you have any suggestions?
ReplyDeleteindustrial course in chennai
Thank you for allowing me to read it, welcome to the next in a recent article. And thanks for sharing the nice article, keep posting or updating news article.angularjs-Training in tambaram
ReplyDeleteangularjs-Training in sholinganallur
angularjs-Training in velachery
angularjs Training in bangalore
angularjs Training in bangalore
Your very own commitment to getting the message throughout came to be rather powerful and have consistently enabled employees just like me to arrive at their desired goals.
ReplyDeleteData Science Training in Chennai | Best Data science Training in Chennai | Data Science training in anna nagar | Data science training in Chennai
Data Science training in chennai | Best Data Science training in chennai | Data science training in Bangalore | Data Science training institute in Bangalore
Data Science training in marathahalli | Data Science training in Bangalore | Data Science training in btm layout | Data Science Training in Bangalore
Fantastic work! This is the type of information that should follow collective approximately the web. Embarrassment captivating position Google for not positioning this transmit higher! Enlarge taking place greater than and visit my web situate
ReplyDeleteData Science training in rajaji nagar | Data Science Training in Bangalore | Data Science with Python training in chennai
Data Science training in electronic city | Data Science training in USA
Data science training in pune | Data science training in kalyan nagar
Thanks for the good words! Really appreciated. Great post. I’ve been commenting a lot on a few blogs recently, but I hadn’t thought about my approach until you brought it up.
ReplyDeletepython training institute in marathahalli | python training institute in btm
This is a nice article here with some useful tips for those who are not used-to comment that frequently. Thanks for this helpful information I agree with all points you have given to us. I will follow all of them.
ReplyDeletepython training institute in marathahalli | python training institute in btm | Data Science training in Chennai
I was looking for this certain information for a long time. Thank you and good luck.
ReplyDeleteData Science Training in Chennai | Best Data science Training in Chennai | Data Science training in anna nagar | Data science training in Chennai
Data Science training in chennai | Best Data Science training in chennai | Data science training in Bangalore | Data Science training institute in Bangalore
Data Science training in marathahalli | Data Science training in Bangalore | Data Science training in btm layout | Data Science Training in Bangalore
You truly did more than visitors’ expectations. Thank you for rendering these helpful, trusted, edifying and also cool thoughts on the topic to Kate.
ReplyDeletebest safety training in chennai
A lot of new things learnt from this post.thanks for sharing the information.keep posting on new things.
ReplyDeleteaws online training
aws training in hyderabad
amazon web services(AWS) online training
Hello! This is my first visit to When I initially commented, I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added
ReplyDeleteindustrial course in chennai
ReplyDeleteThe author has made such a great effort in unveiling these nice guidelines and I hope that they will assist readers.It is most knowledgeable information like this
Android Training
Android Training in Chennai
Really very nice blog information for this one and more technical skills are improve,i like that kind of post.
ReplyDeleteJava training in USA
Java training in Bangalore | Java training in Indira nagar
Java training in Bangalore | Java training in Rajaji nagar
Java training in Bangalore | Java training in Marathahalli
Really you have done great job,There are may person searching about that now they will find enough resources by your post
ReplyDeletepython training institute in marathahalli
python training institute in btm
Python training course in Chennai
Thanks for such a great article here. I was searching for something like this for quite a long time and at last I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays.
ReplyDeleteData Science training in Chennai | Data Science Training Institute in Chennai
Data science training in Bangalore | Data Science Training institute in Bangalore
Data science training in pune | Data Science training institute in Pune
Data science online training | online Data Science certification Training-Gangboard
Data Science Interview questions and answers
I really like the dear information you offer in your articles. I’m able to bookmark your site and show the kids check out up here generally. Im fairly positive theyre likely to be informed a great deal of new stuff here than anyone
ReplyDeletepython interview questions and answers
python tutorials
python course institute in electronic city
Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.
ReplyDeleteiosh safety course in chennai
Some us know all relating to the compelling medium you present powerful steps on this blog and therefore strongly encourage
ReplyDeletecontribution from other ones on this subject while our own child is truly discovering a great deal.
Have fun with the remaining portion of the year.
Selenium training in bangalore | best selenium training in bangalore
Very good information provided, Thanks a lot for sharing such useful information.
ReplyDeleteAviation Courses in Chennai
air hostess academy in Chennai
Airport Management Training in Chennai
airport ground staff training in Chennai
medical coding training
Fashion designing courses in Chennai
interior design courses in Chennai part time
This is exceedingly helpful information, very good work. Thanks for sharing and let me wait for further updates.
ReplyDeleteData Science Course in Chennai
Data Science Training in Chennai
DevOps certification in Chennai
DevOps Training in Chennai
AWS Training in Chennai
AWS course in Chennai
Data Science Training in Velachery
Data Science Training in Tambaram
ReplyDeleteThanks For Sharing Your information Please keep updating us The Information Shared Is Very valuable Time Just Went On redaing The article Python Online Training Data Science Online Training Aws Online Training Hadoop Online Training
Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
ReplyDeleteangularjs online training
apache spark online training
informatica mdm online training
devops online training
aws online training
Great Post,really it was very helpful for us.
ReplyDeleteThanks a lot for sharing!
I found this blog to be very useful!!
JAVA training in Bangalore
I have to search sites with relevant information on given topic and provide Digital marketing in pune them to teacher our opinion and the article.
ReplyDeleteThe knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. It is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. Machine Learning Training in Bangalore
ReplyDeleteplease share more posts
ReplyDeleteblockchain course
Please Share...
ReplyDeletefinal year project proposal for information technology
free internship for bca
web designing training in chennai
internship in coimbatore for ece
machine learning internship in chennai
6 months training with stipend in chennai
final year project for it
inplant training in chennai for ece students
industrial training report for electronics and communication
inplant training certificate
GOOD POST....
ReplyDeletesnowflake interview questions and answers
inline view in sql server
a watch was sold at loss of 10
resume format for fresher lecturer in engineering college doc
qdxm:sfyn::uioz:
java developer resume 6 years experience
please explain in brief why you consider yourself suitable for the position applied for
windows 10 french iso kickass
max int javascript
tp link router password hack
good post........!
ReplyDeleteinplant training in chennai
inplant training in chennai for it.php
panama web hosting
syria hosting
services hosting
afghanistan shared web hosting
andorra web hosting
belarus web hosting
brunei darussalam hosting
inplant training in chennai
very nice... !
ReplyDeletevery nice blogs....!
inplant training in chennai
inplant training in chennai
inplant training in chennai for it
brunei darussalam web hosting
costa rica web hosting
costa rica web hosting
hong kong web hosting
jordan web hosting
turkey web hosting
gibraltar web hosting
good post...!
ReplyDeleteinternship in chennai for ece students
internships in chennai for cse students 2019
Inplant training in chennai
internship for eee students
free internship in chennai
eee internship in chennai
internship for ece students in chennai
inplant training in bangalore for cse
inplant training in bangalore
ccna training in chennai
Hi, Thanks for sharing nice articles...
ReplyDeleteAI Training In Hyderabad
HI, Thanks for sharing nice stuff...
ReplyDeleteAI Training in Hyderabad
I'm actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information.
ReplyDeletepython training in chennai
python online training in chennai
python training in bangalore
python training in hyderabad
python online training
python flask training
python flask online training
python training in coimbatore
Hats off to your presence of mind...I really enjoyed reading your blog. I really appreciate your information which you shared with us.his is very good content you share on this blog. it's very informative and provide me future related information.
ReplyDeleteData Science Training In Chennai
Data Science Online Training In Chennai
Data Science Training In Bangalore
Data Science Training In Hyderabad
Data Science Training In Coimbatore
Data Science Training
Data Science Online Training
Thanks a lot for sharing that useful information. That was a really Intresting post and I would really like to know more.
ReplyDeleteWeb Designing Training in Chennai
Web Designing Course in Chennai
Web Designing Training in Bangalore
Web Designing Course in Bangalore
Web Designing Training in Hyderabad
Web Designing Course in Hyderabad
Web Designing Training in Coimbatore
Web Designing Training
Web Designing Online Training
interesting piece of information, I had come to know about your web-page from my friend, i have read atleast eight posts of yours by now, and let me tell you, your blog gives the best and the most interesting information.
ReplyDeleteSalesforce Training in Chennai
Salesforce Online Training in Chennai
Salesforce Training in Bangalore
Salesforce Training in Hyderabad
Salesforce training in ameerpet
Salesforce Training in Pune
Salesforce Online Training
Salesforce Training
I am very happy to read this. This is the kind of manual that needs to be given and not the random misinformation that’s at the other blogs. Appreciate your sharing this best posting.
ReplyDeleteAI Training in Hyderabad
Hi, Thanks for sharing nice information...
ReplyDeleteData Science Training in Hyderabad
We are used to the fact that we know only religious and public holidays and celebrate only them.Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder Iamlinkfeeder
ReplyDeleteHi, Thnaks for sharing nice articles...
ReplyDeleteAWS Training in Hyderabad
Very Informative post.
ReplyDeleteThirukkural pdf
Sai Satcharitra in English pdf
Sai Satcharitra in Tamil pdf
Sai Satcharitra in Telugu pdf
Sai Satcharitra in Hindi pdf
tamil story books pdf free download
tamil motivational books pdf download
Great informative tips to explore such brain exercises. This blog contains such helpful content that everyone can understand very easily. Asan Bazaar
ReplyDeleteBetween describe board recently return. Deep stage ever half can.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteWonderful information, thanks a lot for sharing kind of information. Your website gives the best and the most interesting information. Thanks!!
ReplyDeletePython Full Stack course in Kukatpally
Nice Article Keep Posting.
ReplyDeletePython training institute in hyderabad