I assume that detach() is called on the UI thread (when it does). If that's the case, um, you need thread synchronization here.
-- Kostya Vasilyev 26.10.2011 2:53 пользователь "Bluemercury" <[email protected]> написал: > So im using an AsyncTask but i'm getting random null exceptions for the > activity reference in the doInBackground method. Anyway here's the non inner > public async task: > > public class QuadrosMobileActivityTask extends AsyncTask<Void, Void, > Object>{ > *protected QuadrosMobileActivity activity=null;* > protected QuadrosMobileApplicationContext mApp; > > public QuadrosMobileActivityTask(*QuadrosMobileActivity activity*) { > > attach(*activity*); > mApp=(QuadrosMobileApplicationContext)* activity.getApplication()*; > } > > @Override > protected void onPreExecute() { > Logger.write("QuadrosMobileActivityTask ", " AsyncTask pre execution "+ > "Current Activity: "+*activity.getClass().getName()*, Logger.INFO); > > Intent broadcast = new Intent(); > broadcast.setAction("SHOW_PROGRESSBAR"); > mApp.sendBroadcast(broadcast); > mApp.setProgressBarInitialState(ProgressBar.VISIBLE); > } > > @Override > protected Object doInBackground(Void... params) { > > if(*activity!=null*){ > try { > Thread.sleep(2000); > } catch (InterruptedException e) { > e.printStackTrace(); > } > Logger.write("QuadrosMobileActivityTask ", " AsyncTask background > initialized "+"Current Activity: > "+*activity.getClass().getName(),*Logger.INFO); > return *activity.doBackGroundRequest(); -->getting random null exceptions > for activity reference* > }else{ > Logger.write("QuadrosMobileActivityTask ", "AsyncTask finished while no > Activity was attached.", Logger.INFO); > return null;} > > } > > > @Override > protected void onPostExecute(Object result) { > > if(*activity!=null*){ > Logger.write("QuadrosMobileActivityTask ", " AsyncTask post execution > "+"Current Activity: "+*activity.getClass().getName()*, Logger.INFO); > //update results > *activity.updateResultsInUi(result);* > mApp.getAsyncTasks().remove(this); > > //check if there's more tasks in the collection > if(mApp.getAsyncTasks().isEmpty()){ > Intent broadcast = new Intent(); > broadcast.setAction("HIDE_PROGRESSBAR"); > mApp.sendBroadcast(broadcast); > mApp.setProgressBarInitialState(ProgressBar.GONE); > } > } > } > > void detach() { > *activity=null;* > } > > void attach(QuadrosMobileActivity *activity*) { > *this.activity=activity;* > } > } > > Is there any reason this should even happen???does the sleep timer is > really necessary for waiting after the rotation is finished? > > regards, > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

