discover AsyncTask and your worries will be over :-) i do all my async stuff with it now. problem solved.
>Again, I found the solution before the post made it through >moderation. Anyway, the workaround I found was to use a >android.os.Handler and use the postDelayed() function within it. If >anyone knows a better solution, please let me know. > >On Sep 13, 3:54 pm, Felix Oghina <[email protected]> wrote: >> My Activity fetches an XML from the Web, parses it and displays >> information in a ListView. Everything was working fine until I decided >> to do the XML fetching and parsing in a TimerTask, so that I could >> show a "Loading..." message while that is happening. After lots of >> debugging, I realized that the application hangs on >> mListAdapter.add(mCurName), where mListAdapter is an >> ArrayAdapter<CharSequence> and mCurName is a String. This instruction >> worked before using a TimerTask, but now it just stops execution >> without any exception or anything. I have tried creating the Timer >> with both new Timer(true) and new Timer(false), but nothing seems to >> work. >> >> Note: the mListAdapter.add(mCurName) call is actually made in a >> function within my main Activity class, which, in turn, is called from >> the run() function inside the TimerTask class that is defined within >> my main Activity class. Just to make sure I made sense, here's a >> sketch of my code: >> >> public class MyActivity extends Activity { >> // vars... >> protected void onCreate(Bundle savedInstanceState) { >> // stuff... >> Timer timer = new Timer(true); >> SearchTask task = new SearchTask(); >> timer.schedule(task, 1); >> } >> public void run() { >> // stuff... >> mResultList = parseResponseXml(responseXml); >> // other stuff, but execution never reaches this point... >> } >> >> public class XmlHandler extends DefaultHandler { >> // vars... >> public void startElement(...) {...} >> public void characters(...) {...} >> public void endElement(String uri, String name, >>String qName) { >> // stuff... >> if (name == "resource") { >> inResource = false; >> if (inResults) { // this is where >>the problem is >> Log.i("TasteKidDebug", >>"Before mListAdapter.add"); // this gets logged >> mListAdapter.add(mCurName); >> Log.i("TasteKidDebug", >>"After mListAdapter.add"); // this doesn't >> mResults.add(mCurName, mCurType); >> } >> } >> // stuff.. >> } >> } >> >> public ResourceList parseResponseXml(String xml) throws Exception { >> // stuff... >> XmlHandler handler = new XmlHandler(); >> xr.setContentHandler(handler); >> xr.parse(new InputSource(new StringReader(xml))); >> return handler.mResults; >> } >> >> } > -- jason.vp.engineering.particle --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

