2016-10-03 13 views
1

データベースでデータが変更されたときに通知を受け取る方法を知りたいのですが。
これには解決策がありますか?
実際にデータをプッシュして取得する方法はわかっていますが、変更が発生したときに通知する方法がわかりませんデータベース内のデータが変更されたときに通知を受け取ります

+0

これは、放送受信機を使用して行うことができます! –

+0

私はPHPスクリプトでリンクされているmysqlデータベースを使用しているので、私はブロードキャストレシーバを使用できるかどうか分かりません –

答えて

1

データベース内のデータを変更する責任がアプリである場合は、あなたのデータに挿入、更新、または削除操作があることをアプリに通知するコールバックを作成します。

あなたは、ローカルデータベースなどのsqliteの使用している場合:

まずアプローチ、AndroidのSDKコンテンツプロバイダ、コンテンツオブザーバークラスを使用します。ローカルのsqliteの一部のテーブルを監視するコンテンツオブザーバを作成します。

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

あなたはORMを使用している場合は、変更内容を通知するORMでのコールバックがあります。たとえばAsyncSessionを使用してGreenDao:

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(); 
     } 
    }); 

バックエンドの変更。

変更がバックエンドにある場合。可能な解決策は、プッシュ通知を送信し、アプリでバックグラウンドサービスを開始することです。

このURLには、google cloudへのプッシュ通知を行うためのPHPスクリプトがあります。

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

あなたはあなたの中にAndroidアプリをGoogleクラウドプッシュ通知の受信機を取り付けて、あなたはRESTエンドポイントを使用してデータベースを公開する場合は、新しいデータをダウンロードするためのHTTPリクエストを行います、特定のサービスを作成する必要があります。

+0

これはデータを更新する外部アプリケーションですので、 –

+0

あなたはバックエンドにデータがあり、mysqlだと言うので、サーバーはバックエンド側のアプリに変更があることをアプリに通知する必要があります。私は解決策を付けます。 –

0

最も簡単な方法は、データベースに行を保存し、データが変更されたときにその値を更新することです。

関連する問題