передача настраиваемого объекта службе Android в другом процессе

У меня есть служба, которая запускается в отдельном процессе:

<service android:name=".services.UploadService"
          android:process=":UploadServiceProcess" />

И я могу успешно выполнить привязку к ней с помощью bindService ( ). Моя проблема возникает, когда я пытаюсь отправить сообщение, вызывая Messenger.send ():

service.send(Message.obtain(null, UploadService.MESSAGE_UPLOAD_REQUEST, uploadRequest));

, где uploadRequest - это настраиваемый объект, реализующий Parcelable

<service android:name=".services.UploadService"
          android:process=":UploadServiceProcess" />

И я могу успешно выполнить привязку к нему с помощью bindService (). Моя проблема возникает, когда я пытаюсь отправить сообщение, вызывая Messenger.send ():

service.send(Message.obtain(null, UploadService.MESSAGE_UPLOAD_REQUEST, uploadRequest));

, где uploadRequest - это настраиваемый объект, реализующий Parcelable

<service android:name=".services.UploadService"
          android:process=":UploadServiceProcess" />

И я могу успешно выполнить привязку к нему с помощью bindService (). Моя проблема возникает, когда я пытаюсь отправить сообщение, вызывая Messenger.send ():

service.send(Message.obtain(null, UploadService.MESSAGE_UPLOAD_REQUEST, uploadRequest));

, где uploadRequest - это настраиваемый объект, реализующий Parcelable

 открытый класс UploadRequest реализует Parcelable {
 публичный файл;
 общедоступное логическое значение 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];
    }
};

}

Я установил точку останова в своем сервисе handleMessage, но мое приложение никогда не достигает точки останова. Однако, если вместо использования моего пользовательского объекта UploadRequest я отправлю значение null, я доберусь до точки останова handleMessage, как и ожидал, но, очевидно, я ничего не могу сделать в этот момент. Я проверил, что file.getPath () при вызове writeToParcel возвращает ненулевую строку. Это наводит меня на мысль, что в моем классе UploadRequest что-то не так, но после поиска в Google я не вижу ничего плохого в моем классе. Есть идеи?

7
задан Nelson Monterroso 24 February 2011 в 04:56
поделиться