Android :: User Thread To Update UI But Dialog Still Come After Task
Jul 31, 2010
I'm trying to learn AsyncTask and Thread but Thread first. I am trying to display a Dialog before "DoSomeTask()" but seems like the Dialog always come after DoSomeTask(). Did I do something wrong here?
--- code---
@Override public void onClick(View v) {
// TODO Auto-generated method stub mainProcessing();
DoSomeTask(); } private void mainProcessing() {
Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background");
thread.start(); }
private Runnable doBackgroundThreadProcessing = new Runnable() {
public void run() { backgroundThreadProcessing();
} };
private void backgroundThreadProcessing() {
handler.post(doUpdateGUI);
} private Runnable doUpdateGUI = new Runnable() {
public void run() { updateGUI();
} };
private void updateGUI() {
final ProgressDialog dialog = new ProgressDialog(CloseVault.this);
dialog.setMessage("Please wait...");
dialog.show();
}
View 5 Replies
Apr 24, 2010
I've got an Android activity which grabs an RSS feed from a URL, and uses the SAX parser to stick each item from the XML into an array. This all works fine but, as expected, takes a bit of time, so I want to use AsyncActivity to do it in the background. The line items = parser.getItems() works fine - items being the arraylist containing each item from the XML. The problem I'm facing is that on starting the activity, the ProgressDialog which i create in onPreExecute() isn't displayed until after the doInBackground() method has finished. i.e. I get a black screen, a long pause, then a completely populated list with the items in. Why is this happening? Why isn't the UI drawing, the ProgressDialog showing, the parser getting the items and incrementally adding them to the list, then the ProgressDialog dismissing?
View 3 Replies
View Related
Aug 18, 2010
Look at my code.
- code -
private Handler handler = new Handler(); private ProgressDialog dialog;
final Runnable runInUIThread = new Runnable() { public void run() { dialog.dismiss();
} };
private void DoThis() {
dialog = new ProgressDialog(Main.this); dialog.setTitle("Title");
dialog.setMessage("Text"); dialog.show();
Thread newTask = new Thread() {
@Override public void run() { Looper.prepare(); DoThat();
handler.post(runInUIThread); Looper.loop();
); newTask.start(); } }
Is it possible to use test.setText("something") in this thread to update a Button text or TextView in the LinearLayout after the dialog is dismissed? I try cheating placing:
test.setVisibility(View.INVISIBLE);
test.setText("something");
test.setVisibility(View.VISIBLE);
after dialog.show();
It kind of updated the text when the dialog open. I want to do it after the dialog was dismissed. What is the correct way to implement this in my thread?
View 3 Replies
View Related
May 21, 2009
I am writing an application in which i need to handle messages between the main thread(the deafult UI related thread) and the user created Gamethread.
The requirement is like this.
An activity(say "Activity_X") is setting the view by "setContentView(some "View_Y")". In "Activity_X" i have implemeted "onCreateOptionsMenu()" and "onOptionsItemSelected()" fucntions for creating menus & a switch case for action to be taken on selecting those menus.Menu has items like "resume/pause/zoom/" .
All action to be take on selecting these menus are implemented in "View_Y" in a separate Gamethread by extending "Thread" class.
So whenever a menu is selected in "Activity_X" i need to send a message to "View_Y". And on receiving this ,a particular action/method should be called in View_Y(GameThread).
How can i achieve this using Handlers?Is there any other way of doing this? Please do share with me some code snippets for these.
View 3 Replies
View Related
May 27, 2010
I have a separate thread running to get data from the internet. After that, I would like to update the ListView in the main thread by calling adapter.notifyDataSetChanged(). But it does not work. Any workaround for that?
View 1 Replies
View Related
Sep 26, 2009
I've created ProgressDialog with a second thread according to the DevGuide,changes screen orientation or 2) hits the back button twice (first to hide the dialog, second to hide the app) to hide the application and run the app again after a while.Then, onCreate() is called (for the second time), and progress bar stops responding properly. My thread may work for a few minutes and I want to give the user possibility to hide it and do sth else. After a while he might want to run the app again in order to check the progress.I found a few articles concerning this topic, but I couldn't find the exact solution I should chose for this problem. So, could you tell mi what is the proper way to handle this? Should i save the handler and dialog state with "onRetainNonConfigurationInstance()"? If so, how to do it properly and is it safe?
View 11 Replies
View Related
Sep 21, 2009
How to show a dialog in thread.run() .My code...
View 4 Replies
View Related
Apr 15, 2010
i had made an application which download a huge list from the internet and display in a listview. The Listview class is supported by my own Class which is extension of the BaseAdapter base class. In the display list adapter getView method I use simple_list_item_multiple_choice. When I would like to insert an progress dialog with a Thread, the System is die with NullPointer Exception in the last row: *public View getView(int position, View convertView, ViewGroup parent) {if(convertView == null) convertView =inflater. inflate (android .R. layout.simpl e_list_item_multiple_choice, parent,false); try {ViewHolder vh = new ViewHolder(); vh.check TextView = (Checked TextView) convertView.findViewById(android.R.id.text1); vh. check TextView. setEnabled (true);* BUT if I don't use the Thread all going to right, there will no NullPointer Exception Can anyone tell me why ? Any solution?
View 2 Replies
View Related
Oct 17, 2010
I have recently experimented with creating an easy way to open a ProgressDialog up in a second thread, so if the main thread freezes the dialog will keep working. Here is the class: public class ProgressDialogThread extends Thread
public Looper ThreadLooper;
public Handler mHandler;public ProgressDialog ThreadDialog;
public Context DialogContext;
public String DialogTitle;
public String DialogMessage;
public ProgressDialogThread(Context mContext, String mTitle, String mMessage)
{ DialogContext = mContext;
DialogTitle = mTitle;
DialogMessage = mMessage;
} public void run()
{ Looper.prepare();
ThreadLooper = Looper.myLooper();
ThreadDialog = new ProgressDialog(DialogContext);
ThreadDialog.setTitle(DialogTitle);
ThreadDialog.setMessage(DialogMessage);
ThreadDialog.show();
mHandler = new Handler();
Looper.loop();
} public void Update(final String mTitle, final String mMessage)
{ while(mHandler == null)
synchronized(this) {
try { wait(10); }
catch (InterruptedException e) {
Log.d("Exception(ProgressDialogThread.Update)", e.getMessage() == null ? "MISSING MESSAGE" : e.getMessage());
mHandler.post(new Runnable(){
@Override
public void run() {
ThreadDialog.setTitle(mTitle);
ThreadDialog.setMessage(mMessage);
public void Dismiss()
{ while(ThreadDialog == null || mHandler == null)
synchronized(this) {
try { wait(10); }
catch (InterruptedException e) {
Log.d("Exception(ProgressDialogThread.Dismiss)", e.getMessage() == null ? "MISSING MESSAGE" : e.getMessage());
mHandler.post(new Runnable(){
@Override
public void run() {
ThreadDialog.dismiss();
public void Continue()
{ while(ThreadLooper == null || mHandler == null)
synchronized(this) {
try { wait(10); }
catch (InterruptedException e) {
Log.d("Exception(ProgressDialogThread.Continue)", e.getMessage() == null ? "MISSING MESSAGE" : e.getMessage());
mHandler.post(new Runnable(){
@Override
public void run() {
ThreadLooper.quit();
However it sometimes work perfectly but other times the application simply freezes and crashes eventually.Here is an example of use:ProgressDialogThread thread = new ProgressDialogThread(this, "Loading", "Please wait...");
thread.start();
// Do Stuff
thread.Dismiss();
thread.Continue();It generates a lot of warning and even some crashes sometimes: eg. Handler: Sending message to dead thread.and exceptions like ANR
View 1 Replies
View Related
Jul 27, 2010
Trouble is, that ProgressDialog show only after loading run(), but I need to show it on start and showing it while loading some data. I put: "dialog = ProgressDialog.show(CategoriesListActivity.this,"Working...","Loading data", true);" in method run(), but the same. I print in Log.i() some info (int i++) and put title of ProgressDialog. Method work correctly, but don't show ProgressDialog. I have read some info that some thread block another thread (my created), that's why doesn't show progressDialog, but can't do anything.
View 2 Replies
View Related
Jun 22, 2009
I need to popup dialog to be showed when i get a message from differnt thread but the dialog should be not dependent on Activity i.e, it should display the dialog wherever the screen focus is .can it be done ..because the dialog is handled per Activity ,i thought of using service but again it would be one more thread added so want to avoid that.
View 2 Replies
View Related
Jul 16, 2010
What is the difference between Service, Async Task & Thread. If i am not wrong all of them are used to do some stuff in background. So, how to decide which to use and when?
View 2 Replies
View Related
Mar 6, 2009
have a Progress Dialog in an extra Thread running. Normally the user will have the keyboard open, because something is to insert! So when the Progress Dialog appears and the user close the keyboard, the dialog dissappears and the application crashes. In the debugger i saw the exception "View not attached to window manager". May because the Dialog is not longer shown but the application want to remove it after the calculation? Here is the code where i start the dialog and the thread:Does somebody know how to solve this?
View 6 Replies
View Related
May 9, 2010
Does anyone have expirience with opengl-ui-opengl threading interraction? I'am developing a small opengl application. I'am a little bit confused with separate opengl thread. Currently, my application is logically separated in two parts - the controlling one and the rendering one. The controlling part interracts with user - accepting user input, changing activities, dealing with files and so on. The rendering part - just render everything it should. Ok, so when I need to load new texture to opengl (unfortunatelly its large and I cant reduce its size), I'd like to show a ProgerssDialog dialog. Trying to show it from the open gl thread brings me an exception: "Can't create handler inside thread that has not called Looper.prepare()". Because the initiator of loading is in the ui thread (for example - user selected a menu option), I'am opening the dialog, adding the load Runnable to stack on Runnables that will be called in Render.onDrawFrame and passing there a callback that will be executed after texture is loaded.
View 2 Replies
View Related
Aug 11, 2010
I'm develop a download manager function which the dialog will popup when the the item was finished download. the download function was running at background.
My question is how can I know when the downloading was finished and the project is intent other activity?
For example:
CODE:............
The above method where should I put? i try put it at onResume(), onStart() in every activity which will open by user. but unlucky it won't work.
View 1 Replies
View Related
Mar 5, 2010
I have a simple app and I'm using the AsyncTask to test out a background process, for clearness purposes I've opted to put my AsyncTask in a separate class rather than in an inner class, which where my problems begin, this is my AsyncTask. Code...
View 8 Replies
View Related
May 27, 2009
I have an app that communicates with a server.While it is communicating, it shows a progress dialog.The way this actually works is that I have a class that I call my Network Gateway.Each method takes a Handler as a callback so that the gateway can send back the response as a bundle when it has finished. Right now when someone changes orientation while a network operation is occuring, the activity doesn't know that a thread is running the network code and then the callback might be invalid.What's the right way to do this? I want to make it so that after the orientation switch, the activity can check something to see if a network operation is running and if so, display the progress dialog again and wait for the callback, or set itself as the callback handler now, invalidating the old one.My first guess is that this is exactly the kind of thing services were designed for, but I'd like specifics if anyone can supply them.
View 25 Replies
View Related
Oct 10, 2010
I have been searching for an answer for this for some time now. I have an async task that downloads the database needed for my app, while this is downloading my app cant do anything as all the data it references is in this file, i have the app waiting for the file to be downloaded but i am attempting to show a progress dialog so the user knows something is happening while they wait for this to happen.however nothing shows up i have also tried directly calling ProgressDialog.show in the pre execute and moving this to the calling activity with no luck.
View 2 Replies
View Related
May 29, 2010
In the code showed as below I create a process dialog for doing some long
operation (in this case waiting 4 seconds). It runs as it should. And shows the "Starting" and "Done" message but when it finishes and I click Button1 again it terminates.
public class main extends Activity { public ProgressDialog dialog = null;
final Handler handler = new Handler(){ public void handleMessage(Message msg){
dialog.dismiss(); TextView tv2 = (TextView) findViewById(R.id.TextView02);
tv2.setText("Done"); } };
Thread runlongjob = new Thread(){ public void run(){
SystemClock.sleep(4000); handler.sendEmptyMessage(0);
} };
/** Called when the activity is first created. */
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
} public void clickhandler(View v){ switch(v.getId()){
case (R.id.Button01): TextView tv1 = (TextView) findViewById(R.id.TextView01);
tv1.setText("Starting...");
dialog = ProgressDialog.show(main.this, "Please wait", "Doing Job...",
true); runlongjob.start(); break; } }
View 2 Replies
View Related
Jun 5, 2010
On my activity, im getting some big data from web, and while getting this data i want to show the user a ProgressDialog with spinning wheel. That i can do only with putting this code into a thread, right? the problem is that after im getting this data i need to insert it into my tableLayout as TableRows and it seems impossible to access the TableLayout from the thread. What can i do to show this progress dialog and to be able access the table layout from the thread ? is there any event that happens on the end of the thread ?
My code fails for : _tableLayout.addView(_tableRowVar, new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));My full code is : final ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "","Getting data.
View 1 Replies
View Related
Sep 17, 2010
When I first got my desire a few weeks ago and joined this forum, i am sure there was a sticky about not using a task killer app. Can someone please link me to it. Been trying to search it out with no look. Think it was by one of the mods. I was new to android at the time, but now I would like to know why task killing is a bad idea. I must have shed loads running in the background.
View 12 Replies
View Related
Nov 15, 2010
I have a class which extends AsyncTask, which is intended to serve as a generic task manager class for my application. The strange behavior is that the progress dialog shows up, but is never dismissed. I am sure that onPostExecute() gets called for every task instance, as any Log.d("","") statements fire if placed in here, even the Toast messages show up from within this method, but I am not able to dismiss the static dialog. I understand that AsyncTask(s) have access to UI thread at only 2 places [onPreExecute() and onPostExecute()], so I think trying to dismiss the dialog in runOnUiThread() is unnecessary. All calls to executeTask() are made from different onCreate() methods of different activities that need to fetch some data over network before populating some of their UI elements, and I always pass the current activity's context to the tasks. As I do not switch activities until after the related tasks are completed, I believe the activity context objects are still valid (am I wrong to have assumed this???) I have never found any of them to be null while debugging.
Could this be a timing issue? I have also observed that most of the times DDMS shows all tasks get completed before the activity is displayed. If I use new Handler().postDelayed(runnable_which_calls_these_tasks,10); in the onCreate(), and add delaying code in foo_X(), the activities are displayed without any delay, but the dialog will just not dismiss(). I have read through quite a number of articles on this issue but am still not able to figure out exactly where am I going wrong. I do not want to define each task as private inner class Task1 extends AsyncTask<> in all of my activity classes and I would not want to (unless this is the only solution) load my application object with all activity references either as mentioned in this discussion: Is AsyncTask really massively flawed or am I just missing something?. I have spent a week on this and am absolutely clueless :( It would be great if someone can guide me, and let me know what am I missing. Following is the class definition: [I've removed some irrelevant application specific code for clarity]
public class NetworkTask extends AsyncTask<Void, Integer, Boolean> {
private Context UIcontext;
private int operationType;
private static ProgressDialog dialog;
private static int taskCount;
private NetworkTask(int operationType Context context){ this.UIcontext = context;
this.operationType = operationType;
if (taskCount++ == 0) dialog = ProgressDialog.show(context,"","Loading...");
}
public static Boolean executeTask(int operationType, Context context) { return new NetworkTask(operationType, context).execute().get();
} @Override protected void onPreExecute(){ super.onPreExecute();
if (taskCount == 1) dialog.show();
} @Override protected Boolean doInBackground(Void... arg0) { switch(operationType){ case TYPE_1: foo1();
break; case TYPE_2: foo2(); break;
case TYPE_3 foo3(); break; case TYPE_4: foo4(); break;
} @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result);
taskCount--;
if (dialog.isShowing() && taskCount == 0){ dialog.dismiss();
}else { Toast.makeText(UIcontext, "Task#"+ operationType+", m done, but there are "+taskCount+" more", 5).show();
} } }
View 1 Replies
View Related
May 22, 2010
How would I force the current thread to wait until another has finished before continuing. In my program the user selects a MODE from an AlertDialog, I want to halt executing of the program before continuing as the mode holds important configuration for the gameplay.
new AlertDialog.Builder(this)
.setItems(R.array.game_modes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
setMode(TRAINING_MODE);
case 1:
setMode(QUIZ_MODE);
default:
setMode(TRAINING_MODE);
break; ............
//continue loading the rest of onCreate();
contineOnCreate(); } })
.create().show();
If this is impossible can anyone give a possible solution?
View 1 Replies
View Related
Sep 29, 2010
I download some data from internet in background thread (I use AsyncTask) and display a progress dialog while downlaoding. Orientation changes, Activity is restarted and then my AsyncTask is completed.I want to dismiss the progess dialog and start a new Activity. But calling dismissDialog sometimes throws an exception (probably because the Activity was destroyed and new Activity hasn't been started yet).What is the best way to handle this kind of problem (updating UI from background thread that works even if user changes orientation)? Did someone from Google provide some "official solution"?
View 1 Replies
View Related
Mar 21, 2010
I show to user a list of categories, he must choose one.
How to force the user to choose before pressing back?
View 4 Replies
View Related
Jul 10, 2009
My program does some network activity in a background thread. Before starting, it pops up a progress dialog. The dialog is dismissed on the handler.This all works fine, except when screen orientation changes while the dialog is up (and the background thread is going). At this point the app either crashes, or deadlocks, or gets into a weird stage where the app does not work at all until all the threads have been killed.How can I handle the screen orientation change gracefully?
View 9 Replies
View Related
May 18, 2009
I have a custom dialog displayed to input user info (ID). This appears on top of an activity with an 'Done' button, however when the edittext is selected and the soft keyboard appears, the keyboard obscures the Done button at the bottom of the dialog. The documentation / blog posts are a little dry on info specifically for dialogs, what do I need to include to get the dialog to pan up or otherwise?
View 5 Replies
View Related
Oct 12, 2010
I would like to be able to detect when a user types a key in the Search Dialog. I plan on using this to hook in to custom suggestion functionality.
Note: The built-in Search Manager custom suggestions functionality won't work for me because I need to customize the layout of the suggestions.
View 1 Replies
View Related
Aug 7, 2010
I am a new android user. I am a new smart phone user. I used to just use a cell phone for calls and texts. Where do I start? What applications do I absolutely need? There are a few applications that are already on the phone that I'll never use (like twitter). I can't seem to get rid of them (do I need to?) What does the kill applications task manager do?
View 9 Replies
View Related
Jan 19, 2010
Is there something like a FileDialog available? From previous threads, it appears there isn't one.
If not, has someone written one?
I want to allow a user to
a) Specify a folder/filename on storage for creating an SQLite database.
b) Specify an existing file/folder on storage card for opening as an SQLite Database.
View 4 Replies
View Related