Mastering Android Widget Development - Part3


SDK Version: 
M3

I just come to a new discovery regarding widgets. I was developing an appwidget, which - just like the widgets we are trying to make in this series of tutorials - and tried it out multiple phones. Unfortunatelly on one of our test phones it didn't function properly. For random intervals it stopped to refresh, and it din't responded to button presses on the widget, only after 1-2 minutes. After hard work I discivered the following:

Buttons on appwiget can have their onclick flunctionality thorough RemoteViews.setOnClickPendingIntent(). This method gets a PendingIntent ap parametes to bound to a button. PendingIntent's can have 3 types created with

getActivity(Context, int, Intent, int)


getBroadcast(Context, int, Intent, int)


and getService(Context, int, Intent, int).

After testing I saw that broadcasts can be delayed even for minutes, however Activity starting PendingIntents are executed properly in the same time. So my appWidget refreshes, and buttons working with broadcasts failed. Activites are not for doing this kind of functionality, so I tested how Service starting PendingIntens are working. They turned out to work properly, and Services can update widgets too. So i will modify my appwidget to work with starting Services instead of sending broadcasts, and we will continue this tutorial next week keeping this in mind.