If I want to make a request from an Android device to a remote service, I can use AsyncTask, AsyncTaskLoader, Intent, etc to make the a request apart from the UI thread. It seems there are a lot of options, but I am confused how to choose among them. Could you explain when and which to use? Also, are there any other options besides the ones I have mentioned?
Ways of making async service calls in Android? and when to use which?
264 views Asked by Grace Huang At
1
There are 1 answers
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in ANDROID-INTENT
- Explicit intent not working with forget password button also unable to read data from DB during sign in
- Main Activity not updating intent returns
- Dialogflow failing to dectect the correct intent
- Launch app only in single instance and kill/prevent other instances if started
- android - sharing files from other apps to my app (react native but is probably not a react native issue)
- Code to open browser is opening an activity
- Android intent extras values not changing with new data on MainActivity
- Register my App with <intent-filter> not working
- Kotlin SENDTO when email has multiple accounts
- Android Studio - Java - Intent from Child Activity Not Received in Parent Activity After Back Press
- Share Multiple images and Text in Whatsapp in Android
- How to add two activity in android studio using Kotlin?
- (Android) Crash a app by android.content.ActivityNotFoundException
- Letting user choose Email Client when they send an email in app
- Google Files not respecting singleInstance launchMode
Related Questions in ANDROID-ASYNCTASK
- android.os.NetworkOnMainThreadException even using an Aysnc task
- Json in android project
- SYNC SMS in Flutter
- accessing MainActivity from long running async task safe way (eg after conguration change)
- Java Android how to make two parallel progress bars in recyclerview
- How to wait for async task to finish getting data from database before loading maps without sleep?
- How to overcome ANRs issue even though i run the background task in GlobalScope.launch(Dispatchers.Main)
- Writing Values to Google Sheet - Coroutines and NetworkOnMainThreadException Issue
- Socket closes after sending a message, thus making receiving message impossible
- Change value in a TextView after requests to firebase - Java Android studio
- Change TextView in the xml file after two asynchronous requests - Java Android studio
- Async/Await Error when Taking Screenshot in Python Using Playwright: 'signal only works in main thread of the main interpreter'
- ANR Genrated : Local Database data load is not working properly in android
- Data bindings don't change UI harmoniously after await Task.Delay(..)
- while scrolling Images gets rotate in imageview in recycleview
Related Questions in ASYNCTASKLOADER
- Json Data reload again on configuration changes in background tasks
- Why does my TaskLoader only stores the last data?
- AsyncTask is deprecated? What method used instead of onPreExecute and onPostExecute?
- What do you use for long running tasks since Loaders and AsyncTask have been deprecated?
- AsyncTaskLoader does not cache data offline
- Weird AsyncTaskLoader behavior
- AsyncTaskLoader: deliverResult, when the variable(for cache) in AsyncTaskLoader will be null(means called)
- Android AsyncTaskLoader: How to use it inside adapter
- Android: setTitle inside RecyclerView addOnItemTouchListener is not working
- Android: How to add AsyncTaskLoader to this RecyclerView
- How to turn this asyncTask to AsyncTaskLoader?
- Android JSON parsing output issue
- Error on Android Studio: Program type already present: android.support.v4.content.AsyncTaskLoader
- Should I use a Loader for each http connection or a single Loader for all it enough?
- How to Use MVVM With asyncTask or any other thing?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
This is an extensively discussed question, since Android provides a long list of mechanisms capable to handle service calls asynchronously, besides the one you mentioned there's also:
Now, the key point in your question is "When to use it" and here would be my answer: In software the only golden rigid rule is the "It depends rule", there's no hard rules for anything in software development there's always different ways to approach a problem in software (i guess that's the reason of the word "soft" in it...) and that's exactly why it always depends, it depends on whatever you need and although one approach might be the most common way to do it like for example "AsyncTask" it doesn't mean at all that AsyncTaks is always the way to go, it always depends on the factors and needs that affect your functionality. There's plenty of things that nowdays get executed using AsyncTaks when maybe all you need could be just a regular common Native Thread.
The only way to be able to make a decision towards the most appropiate approach would be knowing ALL the features around a tool, like for example most people 90% of the time use AsyncTaks just to run doInbackGround on separate thread, but might not even need preExecute, publishProgress, postExecute, etc, and that's something a Regular Thread could do, just like this example there's features for every single object provided in order to do remote calls, however as i already mentioned several times, it all depends on what you need and what tool fits better your needs. Remember there's no hard coded rules for "How, When, and What" to use in software, IT ALL DEPENDS, and making good decisions in that "DEPENDS" makes the difference between good developers from excellent developers...
This is a list of things i usually take on count to implement either one way or another, this list do not apply for all the scenarios but might give you an idea.
AsyncTaks- I know is a good idea to make use of asynctaks when the functionality needs to be monitored, by monitored i mean, i need to keep track of progress during my job, like (download/task progress), because that's exactly what the AsyncTask was originally created for, it was created attached to "The Task Pattern", and if i don't need to make use of at least two methods for monitoring provided by AsyncTaks like onPreExecute,onProgressUpdate, onCancelled etc. I know there might be another way to implement it.
Native Java Threads - I know is good to make use of this tool when my task is not related to any view in android at all, and do not need to be monitored (example: removing/adding data from remote database, and the response might affect just persistence elements that will not be displayed like configuration preferences)
IntentService - When i want to do a one time task in a queueprocessor fashion way, but unliked a native thread, here i would like to have some application context in order to maybe bind an activity etc...
Regards!