<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                數據更新的通知由ContentResolver的notifyChange函數觸發。看MediaProvider的update函數的代碼如下: **MediaProvider.java::update** ~~~ public int update(Uri uri, ContentValuesinitialValues, String userWhere, String[] whereArgs) { int count; int match= URI_MATCHER.match(uri); DatabaseHelper database = getDatabaseForUri(uri); //找到對應的數據庫對象 SQLiteDatabase db = database.getWritableDatabase(); ...... synchronized (sGetTableAndWhereParam) { getTableAndWhere(uri, match, userWhere, sGetTableAndWhereParam); switch(match) { ...... case VIDEO_MEDIA: case VIDEO_MEDIA_ID:{ ContentValues values = newContentValues(initialValues); values.remove(ImageColumns.BUCKET_ID); values.remove(ImageColumns.BUCKET_DISPLAY_NAME); ......//調用SQLiteDatabase的update函數更新數據庫 count =db.update(sGetTableAndWhereParam.table, values, sGetTableAndWhereParam.where, whereArgs); ....... }......//其他處理 }......//synchronized處理結束 if (count > 0 &&!db.inTransaction()) //調用notifyChange觸發通知 getContext().getContentResolver().notifyChange(uri,null); returncount; } ~~~ 由以上代碼可知,MediaProvider update函數更新完數據庫后,將通過notfiyChange函數來通知觀察者。notfiyChange函數的代碼如下: **ContentResolver.java::notifyChange** ~~~ public void notifyChange(Uri uri, ContentObserverobserver) { //在一般情況下,observer參數為null。調用另一個notifyChange函數,直接來看它 notifyChange(uri, observer, true); } public void notifyChange(Uri uri, ContentObserverobserver, boolean syncToNetwork) { //第三個參數syncToNetwork用于控制是否需要發起一次數據同步請求 try { //調用ContentService的notifyChange函數 getContentService().notifyChange( uri, observer == null ? null : observer.getContentObserver(), observer != null && observer.deliverSelfNotifications(), syncToNetwork); } ...... } ~~~ 由以上代碼可知,ContentService的notifyChange函數將被調用,其代碼如下: **ContentSerivce::notifyChange** ~~~ public void notifyChange(Uri uri, IContentObserverobserver, boolean observerWantsSelfNotifications, boolean syncToNetwork) { longidentityToken = clearCallingIdentity(); try { ArrayList<ObserverCall> calls = newArrayList<ObserverCall>(); //從根節點開始搜索需要通知的觀察者,結果保存在calls數組中 synchronized (mRootNode) { mRootNode.collectObserversLocked(uri, 0, observer, observerWantsSelfNotifications,calls); } final int numCalls = calls.size(); for(int i=0; i<numCalls; i++) { ObserverCall oc = calls.get(i); try { /* 調用客戶端IContentObserver Bn端,即ContentObserver 內部類Transport的onChange函數。最后再由Transport調用 客戶端提供的ContentObserver子類的onChange函數 */ oc.mObserver.onChange(oc.mSelfNotify); } ......//異常處理 } if (syncToNetwork) { SyncManager syncManager = getSyncManager(); if (syncManager != null) { //發起一次同步請求,相關內容留待8.4節再分析 syncManager.scheduleLocalSync(null, uri.getAuthority()); } } }finally { restoreCallingIdentity(identityToken); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看