监听ContentProvider中的数据的变化
当两个应用程序A,B同时放问ContentProvider时,当A应用更新了数据库中的数据时,如何让B应用也能自动的监听到ContentProvider的变化,并且获得更新的数据呢?
下面是B的应用的activity
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person"); getContentResolver().registerContentObserver(uri, true, new PersonProviderObServer(new Handler())); } private final class PersonProviderObServer extends ContentObserver{public PersonProviderObServer(Handler handler) {super(handler);}@Overridepublic void onChange(boolean selfChange) {Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");ContentResolver contentResolver = getContentResolver();// select * from person order by personid desc limit 1Cursor cursor = contentResolver.query(uri, null, null, null, "personid desc limit 1");if(cursor.moveToFirst()){int personid = cursor.getInt(cursor.getColumnIndex("personid"));String name = cursor.getString(cursor.getColumnIndex("name"));String phone = cursor.getString(cursor.getColumnIndex("phone"));int amount = cursor.getInt(cursor.getColumnIndex("amount"));Log.i("MainActivity", "id="+ personid+ ",name="+ name+ ",phone="+ phone+ ",amount="+ amount);}} }}