V I*_*S H 3 android contentobserver
嗨,我正在尝试使用以下代码.内容解析器无法使用此功能.任何人都可以提出一个想法
getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI,true, new ContentObserver(new Handler()){
@Override public void onChange( boolean selfChange){
showDialog();
}
@Override
public void onChange(boolean selfChange, Uri uri) {
// Handle change.
showDialog();
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢
一个ContentObserver只适用于一个ContentProvider调用的一个notifyChange()上一个方法ContentResolver时提供的内容发生变化.如果ContentProvider未调用notifyChange(),ContentObserver则不会通知有关更改.
我遇到的问题是,该ContentObserver.onChange()方法从来没有得到所谓的,因为ContentObserver的Handler的Looper不当初始化.我打电话Looper.loop()后忘了打电话Looper.prepare()......这导致了Looper不消耗的事件和调用ContentObserver.onChange().
解决方案是正确创建和初始化a Handler和Looperfor ContentObserver:
// creates and starts a new thread set up as a looper
HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();
// creates the handler using the passed looper
Handler handler = new Handler(thread.getLooper());
// creates the content observer which handles onChange on a worker thread
ContentObserver observer = new MyContentObserver(handler);
Run Code Online (Sandbox Code Playgroud)
关于控制ContentObserver.onChange()执行哪个线程的有用的SO帖子.
| 归档时间: |
|
| 查看次数: |
4055 次 |
| 最近记录: |