如何正确等待实例化对象

时间:2012-02-05 21:17:00

标签: java android multithreading thread-safety

我启动相机活动并告诉它将图像设置为特定文件。当活动返回时,我抓取该文件并尝试将其上传到服务器但有时相机活动尚未完成写入文件,因此我得到NullPointerException。

确保您没有这种竞争条件的最佳做法是什么。我尝试了synchrnized(),但似乎没有解决问题。

synchronized(picFile) {
    imageUploader.uploadImage(picFile); }

我记得我在大学的教授告诉我,如果我们做了一个空闲的等待循环,他会追捕我,所以我觉得应该有一个更好的方法来做这个比等待的循环。

由于

1 个答案:

答案 0 :(得分:1)

您可以注册ContentObserver以通知您媒体存储中的更改并验证该文件是否存在于OnChange回调中。

http://developer.android.com/reference/android/content/ContentResolver.html#registerContentObserver(android.net.Uri,%20boolean,%20android.database.ContentObserver