【问题标题】:How to properly wait for an object to be instantiated如何正确等待对象被实例化
【发布时间】:2012-02-05 21:17:00
【问题描述】:

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

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

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

我记得我大学的教授告诉我,如果我们进行空闲等待循环,他会追捕我,所以我觉得应该有比只是等待的循环更好的方法。

谢谢

【问题讨论】:

  • 我们可以在这里获得更多上下文吗?
  • 虽然我不知道“文件为空”是什么意思,但 android.os.FileObserver 可能适合等待捕获的图像被正确存储。
  • 我稍微整理了一下问题。希望这会有所帮助。谢谢harism,我一定会调查的。

标签: java android multithreading thread-safety


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2019-08-24
    • 2018-02-13
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多