I would say you might need to do updates to the MapView with a Handler, but I would have expected you to get an exception otherwise and it doesn't sound like you are. Still, might be worth a try.
On Apr 10, 7:10 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Hi All, > > One of the methods in my Android App is named locationSubmit(). > It: > -- obtains gps coords, > -- sends the coords to a (Tomcat) server with a web services call, > -- receives back a collection of points in the return from the > server, > -- plots these points on a map, with a recentering of the map > > This all works fine when I drive it with clicks from the keyboard (I > happen > to use Z) -- I can see the appropriate updates to the points with each > Z click. > > However, I now want to run locationSubmit() periodically under the > control > of a TimerTask. When I do, the mapping process appears to freeze > although > everything else seems to keep going. Here is the simple timer task > and > startup (I run it with samplingPeriod=15000; ie, 15 seconds): > > private void startTimer(long samplingPeriod) > { > _lbsTimer = new Timer(false); > _lbsTimer.schedule(new LBSUpdateTask(), new Date(), > samplingPeriod); > > } > > protected class LBSUpdateTask extends TimerTask > { > protected LBSUpdateTask() { } > public void run() > { > locationSubmit(); > } > > } > > The first execution of locationSubmit() under timer control almost > works > correctly: The points are plotted, but the map is not recentered. > And from this point on, the map does not change at all, while the > timer > keeps functioning. However, from observing the server, > I can see that the correct calls are arriving at the > server from the Android client, and the correct returns are being sent > back. > Also, if I run my Android app under the debugger, I can see that it > is receiving the values from the server, and stepping through the code > as exepected, but > not updating the overlay like it does when I drive it with keyboard > clicks. > > The basic outline of locationSubmit() is this: > > private void locationSubmit() > { > try{ > URL url = new URL(getNextLocnURL()); > URLConnection urlconn = url.openConnection(); > .... > Document doc = null; > try{ > DocumentBuilderFactory dbf = > DocumentBuilderFactory.newInstance(); > DocumentBuilder db = dbf.newDocumentBuilder(); > urlconn.getInputStream(); > InputStream istream = urlconn.getInputStream(); > doc = db.parse(istream); > // extract info from doc and add it to an instance > variable > // visible to _mapView below: > _mapView.invalidate(); > } catch (Exception e){ } > > } > > The value of MapView _mapView is set in onCreate to _mapView = new > MapView(this); > There is a simple class MyAppOverlay which extends Overlay, and plots > the > points using draw(...) when _mapView is invalidated. > > Have I missed something here? > Thanks in advance, > Ken Bowen --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to android-beginners@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] Announcing the new M5 SDK! http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en -~----------~----~----~----~------~----~------~--~---