我有一个Android应用程序,我试图将一些照片存储为Blob。我设法把照片放在数据库上。但我还想保留特定用户拍摄的照片列表。因此,在我将照片上传到具有AsyncTask的数据库后,如下所示;
InsertPhotoTask ipt = new InsertPhotoTask();
ipt.setPhotoToUpload(pic);
ipt.execute(getApplicationContext());
我想将新生成的照片ID添加到用户的照片列表中。我在上面的AsyncTask的onPostExecute方法中执行以下操作;
@Override
protected void onPostExecute(Photo result) {
if(result.getId() == null){
Log.i("DELEGATED_PHOTO", "WTF");
}
localUser.getPhotos().add(result.getId());
}
但我每次都会看到WTF日志消息。在我的应用程序控制台的数据存储查看器中,我可以看到添加了照片并分配了ID。那么onPostExecute是否应该能够看到结果呢?顺便说一句,onPostExecute中的结果不为null。我可以到达Photo实体的其他领域。只有getId返回null。 Photo是一个类似于App Engine文档中解释的Entity类。我按照建议自动生成enpoint库。为了完整性,这是我的Photo实体类的相关部分;
@Entity
public class Photo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Blob thumbnail;
private Blob image;
private String imgType;
private Date takingDate;
private List<Integer> scores = new ArrayList<Integer>();
public long getId(){
return this.id;
}
...
关于通过ID获取某个实体的大多数问题都是询问Python而我无法将它们连接到我的案例。
答案 0 :(得分:0)
在ipt.execute()之后使用ipt.get()来获得正确的结果。 OnPostExecute不保证完整的结果。