Java Android:等待对象出现

Java Android:等待对象出现,java,android,object,null,exists,Java,Android,Object,Null,Exists,我想不出一个合适的方法来等待一个物体出现。我正在写一个相机应用程序。拍照后,我将GPS数据写入exif标签。在写入之前,我必须等待location对象出现。我的快速修复方法是启动一个新线程并使用while循环等待对象: private static class MyRunnable implements Runnable { private final String imagePath; private final String thumbPath

我想不出一个合适的方法来等待一个物体出现。我正在写一个相机应用程序。拍照后,我将GPS数据写入exif标签。在写入之前,我必须等待location对象出现。我的快速修复方法是启动一个新线程并使用while循环等待对象:

      private static class MyRunnable implements Runnable {
         private final String imagePath;
         private final String thumbPath;
         MyRunnable(final String anImagePath, String aThumbPath) {
           this.imagePath = anImagePath;
           this.thumbPath = aThumbPath;
         }

         public void run() {
             while (mCurrentLocation == null) {
                 //do nothing
             }
             try {
             writeExifTags(imagePath);
             writeExifTags(thumbPath);
             }
             catch (NullPointerException e) {
                 Log.i(TAG, "NullPointerException");
             }
         }
      }

这是可行的,但是空的while循环看起来非常难看。我想到了对象的某种处理程序,但想不出使用处理程序检查mCurrentLocation是否存在的方法。有人有点机智吗是的,try/catch块现在已经过时了^

您可以尝试使用AsyncTask吗?

嗯,我可以。但我没有比我目前的方法有任何优势。除此之外,我的主要问题是如何定期检查对象是否为空。一个优势可能是在while循环中睡眠/等待…我明白了。像您所说的那样使用处理程序,并使用方法赋值,因为它们是修改mCurrentLocation的唯一方法。当您使用该方法将其分配给null时,将触发句柄事件。我为该问题实现了AsyncTask。代码看起来更干净,尽管它的功能完全相同。我的动机是有点低,挖掘处理,因为问题已经解决了。我添加了Thread.sleep1;到while循环。这对我来说似乎可以接受。谢谢你的帮助