I have "Call Log Widget" on the Android Market:
http://blog.zedray.com/call-log-widget/
The core of this Widget is an AppWidgetProvider which registers a
ContentObserver to the CallLog content URI. This means that my widget
is updated every time a call (incoming, outgoing, missed) is
recorded. This works fine for a while, until *something happens* and
my ContentObserver stops getting called (no error message seen in
trace). I would rather that this ContentObserver persisted until the
user removes the Widget.
I am guessing that my JVM has been destroyed (due to low memory?),
ContentObserver garbage collected and/or ContentObserver unregistered
(or just pointing to nothing), but I don't know how to debug this
without restarting my code (and thereby re-registering).
I can hide this bug by periodically re-registering my Content
provider, but I would rather understand the cause and have a more
optimal solution.
Feedback appreciated.
Mark
### Code snippet ###
public class CallLogWidgetProvider extends AppWidgetProvider {
/** Making this static is an attempt to prevent duplicate
ContentObserver registrations. **/
private static CallObserver sCallObserver;
/** Method called by onEnabled() and onUpdate(). **/
private void registerCallObserver(Context context) {
if (sCallObserver == null) {
sCallObserver = new CallObserver(null,
context.getApplicationContext());
context.getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI,
true, sCallObserver);
}
}
private class CallObserver extends ContentObserver {
private Context mContext;
public CallObserver(Handler handler, Context context) {
super(handler);
mContext = context;
}
@Override
public void onChange(boolean b) {
/** Update all widgets due to a change in content. **/
callOnUpdate(mContext);
}
//... widget code ...
}
### Code snippet ###
--
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