原子化校正
参数选择API不提供像“事务”这样的多个参数原子地被修改的数据库操作。有时候我们需要将两个或更多参数当作一个单位修改。例如,假设存储窗口的x和y坐标,完成原子性的修改的唯一方法是在一个参数里面同时存储两个值。很多编码方法都是可以的,下面是一个简单的例子: int x, y; ... prefs.put(POSITION, x + "," + y);
当读取一个像这样的 "复合参数"就需要解码。出于健壮性的考虑,应该允许被破坏(不可解析)的值被读取: static int X_DEFAULT = 50, Y_DEFAULT = 25; void baz() { String position = prefs.get(POSITION, X_DEFAULT + "," + Y_DEFAULT); int x, y; try { int i = position.indexOf(','); x = Integer.parseInt(coordinates.substring(0, i)); y = Integer.parseInt(position.substring(i + 1)); } catch(Exception e) { // Value was corrupt, just use defaults x = X_DEFAULT; y = Y_DEFAULT; } ... }