2011-02-09 5 views
1

オブジェクトが表示されるのを待つ適切な方法は考えられません。私はカメラアプリを書いています。撮影後、私はGPSデータをexifタグに書き込んでいます。私は書く前に、位置オブジェクトが現れるのを待たなければなりません。これは動作しますが、空のwhileループは非常に醜いAndroid:オブジェクトが表示されるのを待つ

 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ブロックは廃止されました^^)

答えて

0

AsyncTaskを試すことができますか?

+0

よくできました。しかし、私は現在の方法よりも何の利点もありません。私の「主な」質問には、オブジェクトがnullであることを定期的にチェックする方法があります。利点は、whileループで睡眠/待っている可能性があります... – Redfox

+0

私は参照してください。あなたが言ったようなハンドラを使用して、mCurrentLocationを変更するためだけにメソッド割り当てを使用するのはどうでしょうか?このメソッドを使用してnullに割り当てると、ハンドルイベントが発生します。 – AedonEtLIRA

+0

問題に対してAsyncTaskを実装しました。コードはよりきれいに見えます(まったく同じですが)。問題はすでに解決されているので、私の動機はハンドラを掘り下げるのに少し低いです。私は "Thread.sleep(1);"を追加しました。 whileループに渡します。それは私には受け入れられるようです。あなたの助けにもかかわらず、ありがとう。:) – Redfox

関連する問題