weather widget for Perth using BoM FTP and Weatherzone  14 Feb 2013  This is my first widget. Have written half a dozen apps using Java and one using Qt/C++. A few of them were also for the local weather and the others were  to display data from my sqllite databases. Also wrote a few models for testing functions, like asynchronous  processing in a widget using multiple buttons and one for how to  use custom fonts in an activity.  The purpose of this widget is to display the current weather for Perth and its forecast. It gathers data from 3 sites, one an FTP with anonymous logging in. It also uses a custom font on a remote view  using a canvas. It uses an ImageButton and a Button. There were a  lot of problems as I initially used a background thread to do the  Internet stuff. The buttons responded sometimes but not always. Seems  the key to verify it was working correctly was to rotate the tablet. So I switched to an asynchronous task where there is post task processing.  Built a model for this which I intend to upload to GitHub. In that  model I do my pending intents in the post processing. This solved  the 'lost' events. There was quite a learning curve in using AsyncTask  as at first glance the parameters were <String Void String>. However,  after reading the docs, I found that the  types could be whatever one  wanted and also what their real purposewas. Google is a wonderful tool and I found some code from a  Norwegian weather widget which helped me greatly. It used a class  to parse objects to the background task. So I did the same and  created a constructor to receive the appWidgetManager, intent and context. This might be an overkill but don't know the Android structure well  enough to know how to navigate. So parsed everything I needed. The constructor populated some local variables (should I say objects?)  which were then available in the post task part. Then it was a simple  process of copying my code from the crook widget that  used a background thread and making sure all the Internet bits were  in the doInBackground method. I thank Vincenzo (StackOverflow) for  showing me how to use a canvas to use a custom font on a remote view. There were a few places that showed me that the REQUEST_CODE in the  PendingIntent.getBroadcast was the key to getting concurrent intents  working. Not sure if that is the correct way to explain how my problems  were solved. Before using a different REQUEST_CODE for each intent,  the receiver saw all intents equally. I put code into my model to let  the service know which button was touched.  The sites used are the Australian BoM and WeatherZone.  In the first  testing I used soup. Didn't find it that helpful and there was a significant  learning curve. So used Java functions to find things. Regardless, the  web sites can change any day and then the code might have to change. The data  from the BoM FTP is more stable but did not meet all my requiements.