私はアンドロイドモバイルスマートフォン上で動作し、azureモバイルサービスバックエンド(ノードjに基づく)に接続するアプリケーションを持っています。基本的には、モバイルサービスデータベースのテーブルにデータを挿入することです。モバイルアプリケーションでは、私のオブジェクトを挿入した後、レスポンスオブジェクトがnullと異なるIDを持っているかどうかをチェックします。その場合、ローカルのsqliteデータベースの行を削除します。idが "null"の場合、後で操作を再試行します。問題は頻繁にidを受け取らないので、id = "null"として操作を再試行しますが、空白のデータベースをフェッチすると、その行は正常に挿入されたということです。ここでazureモバイルサービスからの挿入を実行した後で、モバイルクライアントで応答を返す最終的な問題
は、私のコードの一部です:
if (downeventstable == null && !error)
downeventstable = FirstmenuScreen.mClient.getTable("downevents" + servicio, downevents.class);
boolean error2 = true;
try {
downeventstable.insert(dwnevent).get();
error2=false;
} catch (Exception e) {
error2 = true;
break;
}
if (!error2 && dwnevent.getId() != null) {
// if no error and id was received deletes row locally in sqlite
}
私は問題は、多分アプリは紺碧で成功し、挿入後の接続を失い、取得していないモバイルネットワークの品質が悪いによって引き起こされていることを推測応答オブジェクトデータが青空に挿入されているかどうかを知り、これらの状況をどのように扱うことができますか?
本当に私はテーブル同期を通常のテーブルを使って手動でやっています。オフライン同期機能について聞いてうれしいです!行IDが紺碧のバックエンド(デフォルトのIDジェネレータスクリプト)によって定義されているため、私は409の結果コードを取得していません。IDが重複したときにレコードが拒否されるように、アプリでIDを設定することをお勧めします。 –