Buggy code:
public class PodcastProvider extends ContentProvider { public static String AUTHORITY = "com.axelby.podax.podcastprovider" ; public static Uri URI = Uri . parse ( ( ( "content:////" + ( PodcastProvider . AUTHORITY ) ) + "//podcasts" ) ) ; public static final String ITEM_TYPE = ( ContentResolver . CURSOR_ITEM_BASE_TYPE ) + "//vnd.axelby.podcast" ; public static final String DIR_TYPE = ( ContentResolver . CURSOR_DIR_BASE_TYPE ) + "//vnd.axelby.podcast" ; private static final int PODCASTS = 1 ; private static final int PODCASTS_QUEUE = 2 ; private static final int PODCAST_ID = 3 ; private static final int PODCASTS_TO_DOWNLOAD = 4 ; private static final int PODCASTS_ACTIVE = 5 ; private static final int PODCASTS_SEARCH = 6 ; public static final String COLUMN_ID = "_id" ; public static final String COLUMN_TITLE = "title" ; public static final String COLUMN_SUBSCRIPTION_ID = "subscriptionId" ; public static final String COLUMN_SUBSCRIPTION_TITLE = "subscriptionTitle" ; public static final String COLUMN_QUEUE_POSITION = "queuePosition" ; public static final String COLUMN_MEDIA_URL = "mediaUrl" ; public static final String COLUMN_LINK = "link" ; public static final String COLUMN_PUB_DATE = "pubDate" ; public static final String COLUMN_DESCRIPTION = "description" ; public static final String COLUMN_FILE_SIZE = "fileSize" ; public static final String COLUMN_LAST_POSITION = "lastPosition" ; public static final String COLUMN_DURATION = "duration" ; private static final String PREF_ACTIVE = "active" ; public static final Uri ACTIVE_PODCAST_URI = Uri . withAppendedPath ( PodcastProvider . URI , "active" ) ; static UriMatcher uriMatcher ; static HashMap < String , String > _columnMap ; public static Uri getContentUri ( long id ) { } DBAdapter _dbAdapter ; @ Override public boolean onCreate ( ) { } @ Override public String getType ( Uri uri ) { } @ Override public Cursor query ( Uri uri , String [ ] projection , String selection , String [ ] selectionArgs , String sortOrder ) { } private String getNeedsDownloadIds ( ) throws MissingFieldException { } @ Override public int update ( Uri uri , ContentValues values , String where , String [ ] whereArgs ) { int count = 0 ; String podcastId ; SharedPreferences prefs = getContext ( ) . getSharedPreferences ( "internals" , MODE_WORLD_READABLE ) ; Long activePodcastId = prefs . getLong ( PodcastProvider . PREF_ACTIVE , ( - 1 ) ) ; switch ( PodcastProvider . uriMatcher . match ( uri ) ) { case PodcastProvider . PODCAST_ID : podcastId = uri . getLastPathSegment ( ) ; break ; case PodcastProvider . PODCASTS_ACTIVE : if ( values . containsKey ( PodcastProvider . COLUMN_ID ) ) { activePodcastId = values . getAsLong ( PodcastProvider . COLUMN_ID ) ; Editor editor = prefs . edit ( ) ; if ( activePodcastId != null ) editor . putLong ( PodcastProvider . PREF_ACTIVE , values . getAsLong ( PodcastProvider . COLUMN_ID ) ) ; else editor . remove ( PodcastProvider . PREF_ACTIVE ) ; editor . commit ( ) ; if ( ( activePodcastId == null ) || ( ( values . size ( ) ) == 1 ) ) return 0 ; } if ( activePodcastId == ( - 1 ) ) return 0 ; podcastId = String . valueOf ( activePodcastId ) ; break ; default : throw new IllegalArgumentException ( "Unknown<seq2seq4repair_space>URI" ) ; } String extraWhere = ( ( PodcastProvider . COLUMN_ID ) + "<seq2seq4repair_space>=<seq2seq4repair_space>" ) + podcastId ; if ( where != null ) where = ( extraWhere + "<seq2seq4repair_space>AND<seq2seq4repair_space>" ) + where ; else where = extraWhere ; values . remove ( PodcastProvider . COLUMN_SUBSCRIPTION_TITLE ) ; if ( values . containsKey ( PodcastProvider . COLUMN_QUEUE_POSITION ) ) { Integer newPosition = values . getAsInteger ( PodcastProvider . COLUMN_QUEUE_POSITION ) ; values . remove ( PodcastProvider . COLUMN_QUEUE_POSITION ) ; updateQueuePosition ( podcastId , newPosition ) ; } SQLiteDatabase db = _dbAdapter . getWritableDatabase ( ) ; if ( ( values . size ( ) ) > 0 ) count += db . update ( "podcasts" , values , where , whereArgs ) ; <START_BUG> getContext ( ) . getContentResolver ( ) . notifyChange ( uri , null ) ; <END_BUG> if ( values . containsKey ( PodcastProvider . COLUMN_FILE_SIZE ) ) getContext ( ) . getContentResolver ( ) . notifyChange ( Uri . withAppendedPath ( PodcastProvider . URI , "to_download" ) , null ) ; if ( podcastId . equals ( activePodcastId ) ) getContext ( ) . getContentResolver ( ) . notifyChange ( Uri . withAppendedPath ( PodcastProvider . URI , "active" ) , null ) ; return count ; } public void updateQueuePosition ( String podcastId , Integer newPosition ) { } @ Override public Uri insert ( Uri uri , ContentValues values ) { } @ Override public int delete ( Uri uri , String where , String [ ] whereArgs ) { } public static void deleteDownload ( final long podcastId ) { } }

Fix:
getContext ( ) . getContentResolver ( ) . notifyChange ( Uri . withAppendedPath ( PodcastProvider . URI , podcastId ) , null ) ;