Android :: Concurrency Of AsyncTasks
Jun 26, 2009
I am replacing the multithreaded code in my app with the AsyncTask from 1.5. I found that two AsyncTasks do not work concurrently. I investigated a bit and found a workaround; I would like second opinion if my solution is right. OR if there is a better solution.
AsyncTask allows the app to do a task on a thread other than the UI thread. But IIUC, it only provides a single thread on which a queue of tasks is performed. Therefore, if one of the task is to wait on some event (n/w or sleep) then all other tasks will wait for it to finish.
To elaborate with the coding example: <code>
public class MyTask extends AsyncTask<...> { ... }
On the UI thread execute two tasks MyTask mt1 = new MyTask().execute(args);
MyTask mt2 = new MyTask().execute(args); </code>
In the above code both the execute calls will return immediately and free up the UI thread; however mt1 will be executed first and mt2 will have to wait until mt1 finishes.
Thanks to the android's open source, we can see implementation of AsyncTask. http://google.com/codesearch/p?hl=en&sa=N&cd=2&ct=rc#uX1GffpyOZk/core...
I copied AsyncTask.java as UserTask.java in my project and changed the value of CORE_POOL_SIZE to 5. This makes the thread pool to use 5 threads to multiplex the queued AsyncTasks. This indeed solved my problem. Now if mt1 blocks on a sleep; mt2 goes ahead and finishes its job.
Here are some questions for those who know more about AsyncTask implementation:
Is this work-around right? If yes, can the CORE_POOL_SIZE be made configurable in future, via an API call? Is there a solution by which multiple thread pools can be used?
Let me add that, I am aware that this is a phone and not a web server - I am not using 10s of threads to do network I/O. However a single thread is not sufficient for my app either.
View 5 Replies
Jun 18, 2009
I am currently writing an app that asynchronously populates a ListActivity. Therefore the query on my ContentProvider is done by a separate thread, not the UI thread. Furthermore the ContentProvider is synchronized by a service in the background. Since this may be a lengthy operation the service also uses its own thread. My question now is: Do I have to do some locks by myself to support concurrent accesses by both reader and writer (in the ContentProvider) or is there already taken care of when inheriting from ContentProvider and implementing the methods? Which thread runs a ContentProvider? Some Binder thread or the calling thread?
View 4 Replies
View Related
Aug 30, 2010
I am using the default Android Media Player in an Activity, trying to play back a couple of video files. However I have a problem with programming what I want. The desired program outcome would be the following:
A video file is played back After that, a dialog is shown, asking the user something A pause of 5 seconds occurs The next video is shown and so forth. How am I to program this? Currently, I use a paradigm like the following:..................
View 1 Replies
View Related
Sep 1, 2010
I am getting data from the server using AsyncTask. I need to update the data periodically.
View 3 Replies
View Related
Mar 19, 2010
I have an AsyncTask that acts as a countdown timer for my game. When it completes the countdown it displays the out of time end screen and it also updates the timer displayed on the screen. Everything works fine, except I need to be able to pause and resume this when the pause button in the game is pressed.
If I cancel it and try to re-execute it, it crashes with an IllegalStateException.
If I cancel it and instantiate a new AsyncTask in its place the old one begins to run again and the new one runs at the same time.
Is there a way to cancel/pause the timer and restart it using AsyncTasks or is there a different way I should be going about doing this?
View 3 Replies
View Related
Nov 1, 2010
I'm trying to run two AsyncTasks at the same time. (Platform is Android 1.5, HTC Hero.) However, only the first gets executed.
Here's a simple snippet to describe my problem:
CODE:................
The output I expect is:
onCreate() is done.
bar bar bar
foo foo foo
bar bar bar
foo foo foo
And so on. However, what I get is:
onCreate() is done.
bar bar bar
bar bar bar
bar bar bar
The second AsyncTask never gets executed. If I change the order of the execute() statements, only the foo task will produce output.
Am I missing something obvious here and/or doing something stupid? Is it not possible to run two AsyncTasks at the same time?
I realized the phone in question runs Android 1.5, I updated the problem descr. accordingly. I don't have this problem with an HTC Hero running Android 2.1.
View 1 Replies
View Related
May 8, 2010
I have three simultaneous instances of an AsyncTask for download three files. When two particular ones finish, at the end of onPostExecute() I check a flag set by each, and if both are true, I call startActivity() for the next Activity.
I am currently seeing the activity called twice, or something that resembles this type of behavior. Since the screen does that 'swipe left' kind of transition to the next activity, it sometimes does it twice (and when I hit back, it goes back to the same activity). It's obvious two versions of the activity that SHOULD only get called once are being put on the Activity stack.
Could this be from both onPostExecute()s executing simultaneously and both checking the flags each other set at the exact same time? This seems extremely unlikely since two processes would have to be running line-by-line in parallel...
A lot removed from this question since I was way off in what I thought was wrong. Nonetheless I found the answer here quite useful, so I have edited the question to reflect the useful parts.
View 1 Replies
View Related
Sep 19, 2010
I'm about to create a lazy image loader for images both from device and from the web for a ListView. I'm thinking of what to use and how, on one hand i can use a thread that pools my request (always running, and i can attach a view and an adapter and it will handle the image loading for me), cache my allready loaded images and checks for the visibility of the images before i load so i wont do unneeded job.
I had another thought of using the AsyncTask like many suggest in the forum. Terhe is one drawback though.I see that many use new MyTask().execute(urls); this presents a problem if i want to start loading and stop loading images on demand. If i use the async task per image then i need new async task for each image, that's a lot of 'new' to make, i can use a pool, but if too many async tasks are stuck, i will still create about 150-200 asyc tasks, too many for my taste...
What do you guys think ? i think a thread will do a nicer job here:
1. keep on running till killed
2. try to get a job from the queue, if not jobs, wait.
3. if a job is available, get it and start processing.
4. each request is processed alone,serially and blocks the thread.
5. once does goes on with '2'.
6. each enqueue that is done by the adapter using startLoadingImage() for views that need to be displayed will create anew job and call notify on the wait lock.
I can optimize this code with a pool of threads if i want several GETPOST requests in parallel. Also I'm caching the images i already downloaded loaded for fast load on next access. the idea is to minimize GC and list's slagging.
View 2 Replies
View Related
Aug 11, 2010
I have no idea, but my app is stalling sometimes completely (not responding to touching the screen) I thought I was following all the rules for threading, but my app is apparently slowing down the Sprint EVO! I have never used an app as slow as my own. I don't get an ANR dialog, though I think I probably should get getting one. I have no idea how to make this application run like every other app I've ever used -- Not freezing. Is it not a good idea to have one HttpClient and keep a static reference to it for all Activities that want to use it? I used to create a new one each time, and thought that changing it to one sped it up. None of my AsyncTasks ever end. If I go to Activity A -> B -> C -> D the first time it will be smooth. I can press back but when I get back to A, its completely frozen, not responding to anything. That when I took that screenshot. I really have no clue what I am doing wrong. Should I manually kill my AsyncTasks on Activity.onPause()?
View 1 Replies
View Related
Oct 19, 2010
today i meet the problem.i need technic can control the android machine from server.then i want send data from server to android with no request from android.
View 2 Replies
View Related
Apr 14, 2010
I'm trying to open a dialog window, but every time I try to open it it throws this exception:
CODE:.................
I'm creating it by calling showDialog with the display's id. The onCreateDialog handler logs fine and I can step through it without an issue, but I've attached it since it seems like I'm missing something:
CODE:............
Is there something missing from this? Some questions have talked about having this problem when creating a dialog from onCreate, which happen because the activity isn't created yet, but this is coming from a call from a menu object, and the appContext variable seems like it is correctly populated in the debugger.
View 3 Replies
View Related
Jun 3, 2010
I'm writing an application which connects to a back office site. The backoffice site contains a whole slew of JavaScript functions, at least 100 times the average site. Unfortunately it does not load them, and causes much of the functionality to not work properly. So I am running a test. I put a page out on my server which loads the FireBugLite javascript text. Its a lot of javascript and perfect to test and see if the Android WebView will load it. The WebView loads nothing, but the browser loads the Firebug Icon. What on earth would make the difference, why can it run in the browser and not in my WebView? Any suggestions.
More background information, in order to get the stinking backoffice application available on a Droid (or any other platform except windows) I needed to trick the bakcoffice application to believe what's accessing the website is Internet Explorer. I do this by modifying the WebView User Agent.Also for this application I've slimmed my landing page, so I could give you the source to offer me aid. package ksc.myKMB;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class myKMB extends Activity {
I already have JavaScript on the web browser on, the problem is the web view is acting to different from the web browser.
View 1 Replies
View Related
Aug 15, 2010
I want to implement my own Tokenizer base on the file
"MultiAutoCompleteTextView.java",
but I encounter an error "com.android.internal.R cannot be resolved" when I try to
import "MultiAutoCompleteTextView.java" to my project.
code:.................
I haven't research any solutions to resolve this problem.How to correct "com.android.internal.R.attr.autoCompleteTextViewStyle" my own attr?
View 1 Replies
View Related
Jan 11, 2010
1- Does Android Browser (Éclair code base) support the "plug-in" or not?
2- Why "Google Gears" support is removed from the clair code base?
I searched the forum and came to know that earlier version of the Android does not support it at all? Here is the link for that, but this query asked in Dec'2008.
View 2 Replies
View Related
Jan 5, 2010
At first,I have a database created by using Ruby on rails.I just already implement insert function(HTTPPost) in my Android Application and it's work.But I don't know how to retrieve specific record from my databases and insert it back to specific record in Android (Like edit function in RoR)This is my insert code :
private void insertComment() {DefaultHttpClient client = new DefaultHttpClient();HttpPost post = new HttpPost("http://10.10.3.87:3000/comments");
// Configure the form parameters
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("comment[content]", t_comment.getText().toString();
nvps.add(new BasicNameValuePair("comment[id_account]", "1"));
nvps.add(new BasicNameValuePair("comment[id_place]", Integer.toString(position)I really try many ways out but it doesn't work and it takes very long time to fight with this piece of code. Actually, I really don't know how to specify RowID to HTTPPost.
View 2 Replies
View Related
Sep 17, 2010
I am doing some android development, and now I need to send some android application generated data onto a remote server (a database)?How can I do that? can I use direct JDBC connection and sql?
View 1 Replies
View Related
Oct 9, 2010
So i am making a android app, and i want it to be so if i call lets say 911 it sends my GPS coordinents to a certain IP, i know everything but how i make it so if i call 911 it sends the info and how i can make it send the info to the IP via 3g,
View 3 Replies
View Related
Jul 10, 2010
I released updates of my apps yesterday and they are being hidden from android 1.5 and 1.6 phones.
This is due to a Market bug which hides apps with bluetooth permissions from android 1.5 and 1.6.
Come on Google fix the market. We spend countless hours making are apps work on ALL android versions and now you do this...
This issue has been raised since June, but has only affected me since i made an update to the market yesterday.
View 1 Replies
View Related
Dec 23, 2009
What exactly are mock tests... I need to know the mock and performance tests available in android for testing android apps..what is the best tool for testing android apps and how..
View 1 Replies
View Related
Aug 17, 2009
I'd like to add a menu option to the Android camera app. Is this possible to do using the current SDK? I know I need to add an intent-filter tag in my activity. But I don't know what I should put in the mime type. I want to be able to process the live camera previews if the user selects the menu option. So what do I put into the type tag of the intent-filter? Also I suppose I won't be using ALTERNATIVE or SELECTED-ALTERNATIVE for the category as I want to deal with the whole intent?
View 3 Replies
View Related
Jan 21, 2010
I was wondering if the market checks if the application can be installed on the device. For example, if I have an Android 1.6 and if I try to install an application with :"<uses-sdk android:minSdkVersion="7" />" on its manifest. What will happend ?
View 4 Replies
View Related
Jan 27, 2010
I have a question about bluetooth RSSI functionality on the Android (either 2.0 or 2.1):
It's easy enough to get the RSSI value when a bluetooth connection is created, but how can you repeatedly get the RSSI value of a connection that is already active? It's really important to be able to do this, because this lets you determine if bluetooth devices are close to each other or far away, but I can't find any appropriate function calls in the Android API.
View 2 Replies
View Related
Feb 5, 2010
I am having a bit of a problem with my Android. So what happened was I downloaded "DroidRootPro" from the market. I rooted my phone with this, installed the 800MHZ ROM image, rebooted and the phone came up great. I was actually surprised on how fast it became. Once the phone came back up, I tried installing one of the custom themes that came with that app (I know I should have left it alone). The phone than rebooted and I was never able to bring it back up. It gets stuck in this endless loop where it tries to boot but doesn�t get past the "Droid" splash screen, it just keeps rebooting every time.
Things I have tried:
-Wipe data/factory reset (in recovery mode), no go.
-Wipe cach partition, no go
-Restore from a "nandroid" backup, no go. I tried pretty much every combination of restores and am unable to bring the phone up.
Is there anyway I can download the factory image that comes with the phone, put it on an SD card and restore to that? I have looked all over but cant find any information on this.
View 1 Replies
View Related
Sep 29, 2010
I am trying to develop an app to supplement the built-in music player. I've used git to download the com.android.music package and looked around at its code. I can launch the music player by copying some of its code and launching activities with intents.
Now what I need to do is get a handle to its current view. In the MusicUtils.java file, I see a line that says
View nowPlayingView = a.findViewById(R.id.nowplaying);
I'd like to do the same thing. Only I don't have access to the R.java file, so I can't write e.g. R.id.nowplaying. How do I do this? How do I reference the music players R.java? I do know the R.java stuff is declared public so that shouldn't be a problem. Right?
Is it even possible? I saw this related question and am now wondering: http://stackoverflow.com/questions/2437271/how-to-load-com-android-music-code-into-eclipse-and-compile
I'm working against the Android 2.2 SDK, but it'd be helpful to know if the answer is different for older versions such as 1.5.
View 2 Replies
View Related
Aug 26, 2010
I am developing an application using com.google.android.maps.jar It is OK to develop it with Eclipse SDK. but an build-error happens when building system.img with GMS licence (com.google.android.maps.jar is already installed at out/target/common/ obj/JAVA_LIBRARIES/com.google.android.maps.jar_intermediates/ com.google.android.maps.jar)
make: *** No rule to make target `out/target/common/obj/JAVA_LIBRARIES/ com.google.android.maps.jar_intermediates/javalib.jar', needed by `out/ target/common/obj/APPS/LifeStory_intermediates/classes-full- debug.jar'. Stop.
Here is my Android.mk
CODE:.............
View 4 Replies
View Related
Feb 23, 2010
I have a very simple AsyncTask implementation example and have problem to test it using Android JUnit framework. It works just fine when I instantiate and execute it in normal application. However when it's executed from any of Android Testing framework classes (i.e. AndroidTestCase, ActivityUnitTestCase, ActivityInstrumentationTestCase2 etc) it behaves sarngely:
- It executes doInBackground() method correctly
- However it doesn't invokes any of its notification methods (onPostExecute(), onProgressUpdate(), etc) --
just silently ignores them whitout showing any errors. This is very simple AsyncTask example................................
View 2 Replies
View Related
Nov 26, 2010
I was woundering if i bought a Cell Phone with out a Data Plan that had Android WiFi that i could still access the Android Network when I was in a WiFi area?Is Android WiFi Apps the same as Android Mobile Apps?
View 13 Replies
View Related
Dec 28, 2009
Android APK-Files are not binaries but byte-code-files. So is it possible to install the same APK-File on both - on x86-Android-Devices and ARM-Android-Devices? There are some x86-Netbooks with Android installed planned and I wonder if it is possible to run the APK-Files on both kinds of devices?
View 1 Replies
View Related
Jun 17, 2010
I started developing android applications. And am testing with the android emulator. Do I really need android phone before releasing it for public usage?
View 6 Replies
View Related
Jul 29, 2009
More or less as it says on the tin. Before I even contemplate downloading the SDK, I was wondering if there was any way of testing Android apps that I'd write without an Android phone available to me? I'm unsure as to whether or not the tools that come with the SDK come with an emulator like VS does for Windows Mobile.Sorry if this is a stupid question, but maybe I'm searching for the wrong thing.Edit I don't suppose there's anything that'll let me write widgets on/for an emulated version of the interface HTC use on the Hero/G2 either is there? Not that it would matter that much.
View 3 Replies
View Related