zoukankan      html  css  js  c++  java
  • Android开发之内容观察者

    内容观察者:

    当关注应用的数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知

    实现步骤:

    1.假如是自定义的ContentProvider,需要在数据发送改变的方法中实现以下代码:

    1 ContentResolver cr = getContext().getContentResolver();
    2 //发出通知,所有注册在这个uri上的内容观察者都可以收到通知
    3 cr.notifyChange(uri, null);
    notifyChange(Uri uri, ContentObserver observer)
    //参数uri:内容发送改变的uri
    //参数observer:可以为null;假如指定为某个内容观察者,有点类似于广播的最终接收者;假如自己注册该内容观察者,为true
     
    2.在想要接受该数据改变通知的地方,注册一个内容观察者
     1 import android.app.Activity;
     2 import android.content.ContentResolver;
     3 import android.database.ContentObserver;
     4 import android.net.Uri;
     5 import android.os.Bundle;
     6 import android.os.Handler;
     7 
     8 public class MainActivity extends Activity {
     9 
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_main);
    14         initLinstener();
    15     }
    16 
    17     private void initLinstener() {
    18         ContentResolver cr=getContentResolver();
    19         cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler()));
    20     }
    21     
    22     class MyObserver extends ContentObserver{
    23 
    24         public MyObserver(Handler handler) {
    25             super(handler);
    26         }
    27         //内容观察者收到数据库发生改变的通知时,会调用此方法
    28         @Override
    29         public void onChange(boolean selfChange) {
    30             super.onChange(selfChange);
    31             System.out.println("短信数据库发送的改变!");
    32         }
    33     }
    34     
    35 }

    registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)

     //参数uri:监听哪个uri上的内容提供者的通知
     //参数notifyForDescendents:false时,需要精准匹配;true时,需要是以uri开头的uri的数据改变,都能收到通知
     //参数observer:发送改变时回调的对象
    需要实现一个MyObserver,实现ContentObserver。并实现该类中的onChange()方法。
  • 相关阅读:
    Spring_Bean的配置方式
    Nginx Ingress设置账号密码
    2.2.4 加减运算与溢出
    2.2.5-2 补码乘法
    2.2.3 移位运算
    flask钩子函数
    flask的cookie、session
    循环冗余校验码
    海明校验码
    python中的 __call__()
  • 原文地址:https://www.cnblogs.com/liyiran/p/5104840.html
Copyright © 2011-2022 走看看