实际上,我有一个使用 ContentObserver 列出更改的表,并且在 OnChange() 中,我触发了 SyncCall。
我的要求是仅在插入或更新操作时进行 SyncCall,如果操作是删除,我不想进行 SyncCall。
为表注册 contentObserver。
ContentResolver mResolver = context.getContentResolver();
// Construct a URI that points to the content provider data table
Uri mUri = HistoryDetailsContract.HistoryEntries.CONTENT_URI;
/*
* Create a content observer object.
* Its code does not mutate the provider, so set
* selfChange to "false"
*/
TableContnetObserver observer = new TableContnetObserver(null);
/*
* Register the observer for the data table. The table's path
* and any of its sub paths trigger the observer.
*/
mResolver.registerContentObserver(mUri, true, observer);
我的 ContentObserver 类。
public class TableContnetObserver extends ContentObserver {
public TableContnetObserver(Handler handler) {
super(handler);
}
/*
* Define a method that's called when data in the
* observed content provider changes.
*/
@Override
public void onChange(boolean selfChange, Uri changeUri) {
/*
* Ask the framework to run your sync adapter.
* To maintain backward compatibility, assume that
* changeUri is null.
*/
//ContentResolver.requestSync(GenericAccountService.GetAccount(), HistoryDetailsContract.AUTHORITY, new Bundle());
SyncUtils.TriggerRefresh();
}
有没有办法使用 ContentObserver 只监听插入和更新操作?
或者至少有没有一种方法可以让我知道触发了 ContentObserver 类中的 onChange() 方法的操作类型(插入、更新或删除)?
最佳答案
ContentObserver
本身无法知道是什么操作导致了变化。如果您是发送更改通知的人,那么您可以
查询参数或 fragment
听那些也/代替。
关于Android:是否可以使用 ContentObserver 仅监听插入和更新操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32482256/