在数据库中更改数据时收到通知

时间:2016-10-03 12:51:40

标签: android database

我想知道如何在数据库中更改数据时收到通知 是否有解决方案?
事实是我知道如何推送和获取数据,但我不知道如何在修改发生时收到通知

2 个答案:

答案 0 :(得分:2)

如果更改数据库中数据的责任是您的应用,则应创建数据库层,然后创建一些回调以通知您的应用,您的数据具有插入,更新或删除操作。

如果你像本地数据库一样使用sqlite:

第一种方法,使用android SDK内容提供程序,内容观察者类。创建一个监视本地sqlite中某些表的内容观察器。

http://www.grokkingandroid.com/use-contentobserver-to-listen-to-changes/

如果您使用ORM,ORM中会有回调来通知更改。例如,GreenDao使用AsyncSession:

AsyncSession asyncSession = App.getInstance().daoSession.startAsyncSession();
asyncSession.setListener( new AsyncOperationListener() {
    @Override
    public void onAsyncOperationCompleted(AsyncOperation operation) {
        // do whats needed
    }
});

asyncSession.insert(MyObject);

如果您使用Realm.IO,则会从领域事务处回调,以通知更新已完成。

Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            MyObject myobject = new MyObject();
            myobject.setId(UUID.randomUUID().toString());
            myobject.setName("My object name test");
            realm.copyToRealm(myobject);
        }
    }, new Realm.Transaction.Callback() {
        @Override
        public void onSuccess() {
            //realm already update
            Log.e("lh", "this callback i can use to notify. after save " + realm.allObjects(MyObject.class).size());
            realm.close();
        }
    });

后端的长安。

如果更改位于后端。一种可能的解决方案是发送推送通知并开始在应用程序中执行后台服务。

在此网址中,您有一个PHP脚本可以向Google云端发送推送通知。

https://gist.github.com/prime31/5675017

您必须在Android应用中附加Google云推送通知接收器并创建一个特定服务,如果您使用REST端点公开数据库,它将执行HTTP请求以下载新数据。

答案 1 :(得分:0)

最简单的方法是在数据库中保留一行并在数据更改时更新其值。