Позвольте мне сначала дать вам полную картину: я разрабатываю приложение на основе определения местоположения, которое вызывает постоянный отдых и обмен объектами среди нескольких видов деятельности и услуг.Необходимые данные для создания объектов, которыми обмениваются, хранятся в базе данных SQLite, которая, в свою очередь, заполняется извлечением данных из удаленной базы данных SQL.
Быстро стало очевидно, что передача необработанных атрибутов объектадля действий / сервисов (через намерения), это было огромные накладные расходы на кодирование, уменьшая все перспективы расширения, которые может иметь приложение.Итак, вскоре я решил расширить класс основного объекта, чтобы реализовать класс Parcelable , как показано ниже:
public class MyProduct implements Parcelable {
//MyProduct Attributes
private int myProductId;
private String myProductDescription;
private float myProductRadius;
//More attributes...
public MyProduct() {
myProductId=-1;
myProductDescription="defaultProductDescription";
myProductRadius=10;
//More attributes
}
public int describeContents(){
return 0;
}
// write your object's data to the passed-in Parcel
public void writeToParcel(Parcel out, int flags){
//Product attributes
try{
out.writeInt(myProductId);
out.writeString(myProductDescription);
out.writeFloat(myProductRadius);
//More attributes
}
catch (Exception e){}
}
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
public static final Parcelable.Creator<MyProduct> CREATOR = new Parcelable.Creator<MyProduct>() {
//public class MyCreator implements Parcelable.Creator<MyProduct> {
public MyProduct createFromParcel(Parcel in) {
return new MyProduct(in);
}
public MyProduct[] newArray(int size) {
return new MyProduct[size];
}
};
// example constructor that takes a Parcel and gives you an object populated with it's values
private MyProduct(Parcel in) {
//in.readParcelable(MyProduct.class.getClassLoader());
try{
//MyProduct.class.getClassLoader();
myProductId=in.readInt();
myProductDescription=in.readString();
myProductRadius=in.readFloat();
//More attributes
}
catch(Exception e){}
}
//Setters and Getters
}//endOfMyProduct.class
Хотя я проверял каждую запись данных в полях участка, следующее исключениепродолжает порождать:
01-05 19:35:11.570: ERROR/Parcel(59): Class not found when unmarshalling: com.nifo.distribution.MyProduct, e: java.lang.ClassNotFoundException: com.nifo.distribution.MyProduct
По этой причине я рассматриваю класс MyProduct.class, реализующий serializable , в надежде, что он превратится в более прощающую ошибки структуру.Каковы будут плюсы и минусы такого чередования в случае, описанном выше?