Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android簡易實戰教程--第二十一話《內容觀察者監聽數據庫變化》

Android簡易實戰教程--第二十一話《內容觀察者監聽數據庫變化》

編輯:關於Android編程

當數據庫的數據發生改變,我們又想知道具體改變的情況時,就需要對數據庫的變化情況做一個監控。這個任務,就由內容觀察者來完成。下面這個案例,為短信數據庫注冊內容觀察者,來監控短信的變化情況,當短信數據庫發生改變的時候,去做相應的業務處理即可(這裡只是打印log)

布局文件選擇默認,因為用不到任何界面。

看一下主活動中的代碼:

 

package com.itydl.contentobserver;

import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.ContentObserver;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //注冊一個內容觀察者,監聽短信數據庫內容的改變
        ContentResolver cr = getContentResolver();
        //uri:監聽哪個uri上的內容提供者的通知,數據庫的uri
        //notifyForDescendents:如果是true,那麼只要以content://sms開頭的uri的數據改變,都能收到通知,比如content://sms/inbox。其實寫死true即可
        //第三個參數:表示內容觀察者的實例(這裡繼承ContentObserver實現類)
        cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler()));
    }
    
    class MyObserver extends ContentObserver{

		
    	
		public MyObserver(Handler handler) {
			super(handler);
			// 空構造。不許需要做任何的處理
		}

		//收到數據改變的通知,此方法調用
		@Override
		public void onChange(boolean selfChange) {
			// TODO Auto-generated method stub
			super.onChange(selfChange);
			System.out.println("短信數據庫改變");
		}
		
    }


    
    
}

現在可以運行程序了,然後往模擬器或者手機上,發送一條短信,改變短信數據庫。發現,每發送一條短信,或者接受一條短信,log就會輸出。

 

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved