ContentProvider 데이터 변경 수신

1781 단어 ContentObserver
프로그램 A가 insert, update, delete를 실행할 때 getContext () 를 통과합니다.getContentResolver().notifyChange(uri,null) 방법은 이 Uri에 등록된 모든 감청자의 데이터가 바뀌었음을 알려줍니다
QQ 커뮤니티 3에 오신 것을 환영합니다:317874559
//    
	@Override
	public int delete(Uri uri, String selection, String[] selectionArgs) {
		int number = 0;
		if (uriMatcher.match(uri) == 1) {
			//         ,        
			number = mysqlite.getReadableDatabase().delete("user_info",
					selection, selectionArgs);
		}
		//         
		getContext().getContentResolver().notifyChange(uri, null);
		return number;
	}

 
B 프로그램에서registerContent Observer(Uriuri,boolean notifyForDescendents,Content Observer observer) 방법으로 A 프로그램의 데이터 변화를 감청합니다
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//  uri          
		getContentResolver().registerContentObserver(
				Uri.parse("content://com.android.xiong.ConentProviderTestA.firstContentProvider/userinfo"), true,
				new SmsObserver(new Handler()));
	}

registerContent Observer의 세 번째 파라미터는 감청 실례입니다.Content Observer 클래스를 계승하고 onChange (booleab self Change) 방법을 다시 써야 합니다. 이 방법은 Uri의 Content Provider 데이터를 감청할 때 이 방법을 터치합니다.
	//        ContentOberver   
	private final class Observer extends ContentObserver {

		public SmsObserver(Handler handler) {
			super(handler);
		}

		@Override
		public void onChange(boolean selfChange, Uri uri) {

			//           (                )
			Cursor cursor = getContentResolver().query(
					Uri.parse("content://com.android.xiong.ConentProviderTestA.firstContentProvider/userinfo"), null, null, null, null);
			}
		}

	}

좋은 웹페이지 즐겨찾기