2011-04-20 82 views
0

我已經在我的活動下面的代碼:ContentObserver獲取有關刪除通知,但不插入或更新

Cursor mCursor = managedQuery(ActivityColumns.CONTENT_URI, PROJECTION, null, null, 
       getSortOrderStringFromSpinner()); 

     mCursor.registerContentObserver(new ContentObserver(new Handler()) 
     { 
      @Override 
      public void onChange(boolean selfChange) 
      { 
       ...snip...// breakpoint is set here     
      } 

      @Override 
      public boolean deliverSelfNotifications() 
      { 
       return true; 
      } 
     }); 

...在我使用讓我的數據DataProvider的,我設置的通知URI查詢方法中的類型的URI我查詢:

c.setNotificationUri(getContext().getContentResolver(), uri); 

最後,更新,插入和刪除,如果操作成功,用戶被通知:

上述

的notificationUri在該行是被插入/更新或刪除的項目的URI。

隨着代碼的「...略...」行設置一個斷點,我添加,刪除和更新一些記錄。我只會收到有關刪除的通知,但不會更新或插入。我究竟做錯了什麼?

回答

1

的問題是,就像我懷疑:內容觀察者沒有接收關於插入或更新的更新,因爲列表中的活動,本來是要當時被刷新被暫停。要在我的應用程序中插入或更新記錄,用戶將啓動一個不同的活動,在其中編輯記錄,然後單擊「提交」。

的保存,然後在

protected void onActivityResult (int requestCode, int resultCode, Intent data) 

執行我不知道什麼,我發現,當我閱讀文檔是onActivityResult是:

當一個活動,你推出了名爲退出,爲您提供您開始使用的requestCode,返回的resultCode以及任何其他數據。如果活動顯式返回該結果,未返回任何結果或在操作期間崩潰,resultCode將爲RESULT_CANCELED。

您會立即收到此調用之前的onResume()當你的活動重新開始。

所以底線是,活動並不活躍,當我進行插入和更新,因此沒有得到通知有關插入或更新。

刪除是不同的,因爲當「刪除」從上下文菜單中選擇我的應用程序中刪除從列表中的項目。該活動始終保持活躍狀態​​。

0

這還需要一些更多的測試,但似乎問題出現了,當光標更新發生的與沒有得到通知的內容觀測活動暫停。而暫停活動不接收事件......我想......

+2

你解決這個問題? – Merlin 2011-07-25 03:30:48

0

呼叫

getContext().getContentResolver().notifyChange(notificationUri, null); 

應包含內容的觀察者的引用被通知即

getContext().getContentResolver().notifyChange(notificationUri, MyContentObserver); 
相關問題