• 实例教程十:监听ContentProvider中数据的变化


    不错的帖子:

    Android漂亮蘑菇街UI界面
    http://www.eoeandroid.com/thread-211482-1-1.html

    Android 3D 乡村赛车 完整代码
    http://www.eoeandroid.com/thread-211471-1-1.html

    乐看播放器源代码,对写视频播放的人来说非常有用
    http://www.eoeandroid.com/thread-211494-1-1.html

    --------------------------------帖子正文---------------------

    1.首先新建一个Aapp应用程序,还是需要使用到上一章的数据

    package cn.itcast.app;
    
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.ContentValues;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends Activity {
            /**
         * 监听ContentProvider(内容提供者)中的数据变化
         * 为什么要监听?
         * 例:此时有A应用和B应用,A应用向ContentProvider添加一条数据
         * 而此时B应用若想知道A应用做了什么操作,则需ContentProvider通知
         * ContentProvider会发出数据变化通知,B应用听过监听ContentProvider得到通知
         */
            
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
        
        
        
        public void insert(View v){
                Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");
                ContentResolver resolver = this.getContentResolver();
                ContentValues values = new ContentValues();
                values.put("name", "lixiao");
                values.put("phone", "123456789");
                values.put("amount", "500");
                resolver.insert(uri, values);
        }
        
    }
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="insert"
            android:text="@string/button" />
    
    </LinearLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="hello">Hello World, MainActivity!</string>
        <string name="app_name">A应用</string>
        <string name="button">往内容提供者添加数据</string>
    
    </resources>

    使用上章的Other程序作用B应用程序,监听ContentProvider

    package cn.itcast.other;
    
    
    
    import android.app.Activity;
    
    import android.content.ContentResolver;
    
    import android.content.Context;
    
    import android.database.Cursor;
    
    import android.net.Uri;
    
    import android.os.Bundle;
    
    import android.os.Handler;
    
    import android.util.Log;
    
    import android.widget.Toast;
    
    
    
    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");
    
                //注册一个数据变化监听器        
    
            this.getContentResolver().registerContentObserver(uri, true, new PersonContentObserver(new Handler()));
    
        }
    
        
    
        private class PersonContentObserver extends ContentResolver{
    
                    public PersonContentObserver(Handler handler) {
    
                            super(handler);
    
                    }
    
                    
    
                    public void onChange(boolean selfChange) {
    
                            // TODO Auto-generated method stub
    
                            Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");
    
                            Cursor cursor = getContentResolver().query(uri, null, null, null, "personId desc limit 1");
    
                            if(cursor.moveToFirst()){
    
                                    String name = cursor.getString(cursor.getColumnIndex("name"));
    
                                    Log.i("MainActivity", name);
    
                            }
    
                    }
        }
    
    }
  • 相关阅读:
    Lombok 安装、入门
    Centos 6.5中使用yum安装jdk
    Mysql规范和使用注意点(转)
    Java编码规范
    windows2016重新配置sid
    Postman POST接口请求无法获取数据
    微信修改密码
    SQL事务
    .net时间格式化
    SQL查询列是否有重复值
  • 原文地址:https://www.cnblogs.com/vus520/p/2747765.html
Copyright © 2020-2023  润新知