java - 如何正确等待对象被实例化

标签 java android multithreading thread-safety

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

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

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

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

谢谢

最佳答案

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

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

关于java - 如何正确等待对象被实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9153118/

相关文章:

java - 如果我通过 testng.xml 运行测试,则会出现 NullPointerException,但它一次可以正常工作

java - 直接运行 shell 命令和从 shell 脚本 sh 文件运行的区别

android - 如何使用 HTML 5 创建一个安卓应用程序

java - 如何使用 Java 线程从 MySQL 检索数据?

c - 多个线程( worker )执行不同的功能

c++ - 从 'DWORD (*)(void*)' 到 'DWORD (*)(void*)' 的无效转换

Java流: sorting by ZoneDateTime field

java - Maven编译插件错误v3.0.3

android - 为什么 Okio 比 BufferedInputStream 和 BufferedOutputStream 更高效?

android - FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 未在 Nexus 10 (Android 4.4.2) 中设置