Diferencia entre ContentUris.withAppendedId y Uri.buildUpon (). AppendPath

Soy un poco aficionado y estoy haciendo mi curso en línea de Android. Encontré estos 2 fragmentos de código diferentes para agregar a un URI

 public static Uri buildWeatherUri(long id) {
     return ContentUris.withAppendedId(CONTENT_URI, id);
 }

Aquí obtengo un URI con ID agregado a CONTENT_URI

public static Uri buildWeatherLocation(String locationSetting) {
     return CONTENT_URI.buildUpon().appendPath(locationSetting).build();
 }

Aquí obtengo un URI con locationSetting agregado a CONTENT_URI

Me pregunto si ambos tienen la misma funcionalidad.

Respuesta 1

si suponemos:

CONTENT_URI = content://com.example.myapp

luego

buildWeatherUri(5) -> content://com.example.myapp/5

buildWeatherLocation("location") -> content://com.example.myapp/location

Ahora veamos el ContentUris' código fuente :

public class  ContentUris {

     public static long  parseId(Uri contentUri) {
         String last = contentUri.getLastPathSegment();
         return last == null ? -1 : Long.parseLong(last);
     }

     public static Uri.Builder  appendId(Uri.Builder builder, long id) {
         return builder.appendEncodedPath(String.valueOf(id));
     }

    public static Uri withAppendedId(Uri contentUri, long id) {
        return appendId(contentUri.buildUpon(), id).build();
    }
}

la diferencia está en usar estos dos métodos:

appendEncodedPath vs appendPath

Codificación y decodificación de componentes URI

Cada componente de un URI permite un conjunto limitado de caracteres legales. Otros caracteres primero deben codificarse antes de que puedan integrarse en un URI. Para recuperar los caracteres originales de un URI, pueden decodificarse.

Entonces:

appendEncodedPath

Agrega el segmento dado a la ruta.

appendPath

Codifica el segmento dado y lo agrega a la ruta.

Respuesta: 2

Quiero escribir una consulta de criterios usando "group by" y quiero devolver todas las columnas. Plane sql es así: seleccione * del grupo Tab por orden de nombre_cliente por creación_hora; Entiendo que ...

Estoy desarrollando una aplicación para Android, en la que los usuarios ingresan su nombre, apellido, correo electrónico y contraseña para registrarse. Este proceso de entrada funciona perfectamente bien, ahora quiero verificar cada vez, cuando un ...

Estaba pensando en comenzar a investigar sobre el rendimiento de OO-DBMS para las aplicaciones Java para usar en escenarios de producción. ¿Tuviste alguna experiencia exitosa usando un OO-DBMS para Java en lugar de un RDMBS? ...

Tengo un hashmap declarado como: HashMap <String, Double> hm = new HashMap <String, Double> (); Estoy declarando un Vector como: Vector <String> productList = new Vector <String> (); ...