Google Play サービスの AppStateClient に問題があります。以下のコードを 1 つのデバイスのみで実行すると、期待どおり onStateLoaded に入りますが、別のデバイスが関係している場合は、データに競合がなくても常に競合が発生します。
@Override
public void onSignInSucceeded() {
Log.i("", "StatCount" + playHelper.getAppStateClient().getMaxNumKeys());
playHelper.getAppStateClient().updateState(0, "test".getBytes());
playHelper.getAppStateClient().loadState(new OnStateLoadedListener() {
@Override
public void onStateLoaded(int i, int i2, byte[] bytes) {
Log.i("AppStateTest","load {" + new String(bytes) +"}");
}
@Override
public void onStateConflict(int i, String s, byte[] bytes, byte[] bytes2) {
Log.i("AppStateTest","conflict " + new String(bytes) +" <> " + new String(bytes2));
}
},0);
}
出力:
I/AppStateTest( 4173): conflict test <> test