He consultado con los Ancianos de Tiendatek y parece ser que este código que voy a mostrar a continuación lleva en el proyecto desde antes que apareciera el primer teléfono Android... (fecha que no recordamos por su lejanía en el tiempo)
private void editVendor() {
mVendor = mVendorsManager.getEntityById(mRowId);
AnalyticsManager.trackAnalytics(getString(R.string.analitycs_vendors_detail_menu_edit), this);
Intent i = new Intent(VendorScreen.this, VendorEdit.class);
i.putExtra(VendorsDbAdapter.KEY_VENDOR_ID, mVendor.getEntityId());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_NAME, mVendor.getName());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_REP_NAME, mVendor.getRepName());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_MOBILE_NUMBER, mVendor.getMobile());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_FIXED_NUMBER, mVendor.getFixed());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_ADDRESS, mVendor.getAddress());
i.putExtra("VendorBalance", Long.toString(mVendorBalance));
i.putExtra(VendorsDbAdapter.KEY_VENDOR_NOTES, mVendor.getNotes());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_IS_MFI, mVendor.getMFI());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_REP_EMAIL, mVendor.getRepEmail());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_EMAIL, mVendor.getMail());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_DEBT_LIMIT, mVendor.getDebtLimit());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_SHOPKEEPER_ID, mVendor.getShopkeeperId());
i.putExtra(VendorsDbAdapter.KEY_VENDOR_FREQUENCY, mVendor.getVendorFreq());
startActivityForResult(i, ACTIVITY_EDIT);
}
No hay nada como pasarle TODOS los parámetros que necesitamos de un mismo objeto a una actividad.
Se me ocurren dos soluciones a este "olor". Una de ellas tan simple como pasarle sólo el Id del "Vendor" y capturar el resto de datos en la actividad destino, o si "mVendor" fuera instancia de una clase serializable, pasar por los Extras el objeto completo. Al final opté por pasar sólo el Id del Vendor.