Tengo un servicio que está configurado para iniciarse en un proceso separado:pasando objeto personalizado al servicio de Android en diferentes procesos
<service android:name=".services.UploadService"
android:process=":UploadServiceProcess" />
Y puedo unir con éxito a él utilizando bindService(). Mi problema se produce cuando intento enviar un mensaje llamando Messenger.send():
service.send(Message.obtain(null, UploadService.MESSAGE_UPLOAD_REQUEST, uploadRequest));
donde uploadRequest es un objeto personalizado que implementa parcelable
public class UploadRequest implements Parcelable { public File file; public boolean deleteOnUpload;
public UploadRequest(File file, boolean deleteOnUpload) { this.file = file; this.deleteOnUpload = deleteOnUpload; } private UploadRequest(Parcel in) { this.file = new File(in.readString()); } public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.file.getPath()); } public static final Parcelable.Creator<UploadRequest> CREATOR = new Parcelable.Creator<UploadRequest>() { public UploadRequest createFromParcel(Parcel in) { return new UploadRequest(in); } public UploadRequest[] newArray(int size) { return new UploadRequest[size]; } };
}
puse un punto de interrupción en mi handleMessage servicios, pero mi aplicación nunca llega al punto de ruptura. Sin embargo, si en lugar de usar mi objeto UploadRequest personalizado envié null, llego al punto de ruptura de handleMessage como era de esperar, pero obviamente no puedo hacer nada en ese momento. Comprobé que file.getPath() al llamar a writeToParcel devuelve una cadena no nula. Esto me lleva a creer que algo no funciona en mi clase UploadRequest, pero de google no veo nada malo en mi clase. ¿Algunas ideas?
Gracias! Quizás la próxima vez voy a RTFM: D –
¡Esto es realmente esotérico así que me siento bien aprendiendo algo también! –