Java 如何正确地等待对象被实例化

Java 如何正确地等待对象被实例化,java,android,multithreading,thread-safety,Java,Android,Multithreading,Thread Safety,我启动相机活动并告诉它将图像设置为特定文件。当活动返回时,我会抓取该文件并尝试将其上载到服务器,但有时摄影机活动尚未完成对该文件的写入,因此我会收到NullPointerException 确保你没有这种比赛状态的最佳实践是什么。我尝试了synchronized(),但似乎无法解决问题 synchronized(picFile) { imageUploader.uploadImage(picFile); } 我记得我的大学教授告诉我,如果我们做一个空闲的等待循环,他会找到我,所以我觉得

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

确保你没有这种比赛状态的最佳实践是什么。我尝试了synchronized(),但似乎无法解决问题

synchronized(picFile) {
    imageUploader.uploadImage(picFile); }
我记得我的大学教授告诉我,如果我们做一个空闲的等待循环,他会找到我,所以我觉得应该有一个更好的方法来做这件事,而不是仅仅等待的循环


谢谢

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


)

我们可以在这里了解更多的上下文吗?虽然我不知道“文件为空”的确切含义,但有
android.os.FileObserver
可能适合等待捕获的图像正确存储。我稍微澄清了这个问题。希望这能有所帮助。谢谢哈里斯,我一定会调查的。