インターネットに接続してリアルタイムで緯度および経度の逆座標を行うためのアンドロイドアプリがあります。これはUIに遅れて、非同期/スレッドハンドラを使用せずに "応答しない強制終了/待機"エラーを発生させる可能性があります。AndroidでonLocationChanged(Location loc)とASyncタスクの問題
非常にうまく動作する非同期タスクを実装しました。 UI lag!)、onLocationChangedメソッド内で設定された変数(経度には緯度&に設定されています)にはアクセスできません。 私はこれをやっているクラスは、変数を渡し、逆ジオコーディングされたアドレスを含む人にSMSを送ることができる別の別のクラスにリンクされています。 しかし、doinbackgroundメソッドを使用して非同期タスクを実装して以来、私は必要なものを送信できなくなりました。私はより良い説明ができるかどうかわからない、私はサンプルコードを提供します。
public void onLocationChanged(Location loc){ mylat = loc.getLatitude(); mylong = loc.getLongitude(); }
リストアドレス= geoCoder.getFromLocation(mylat、mylong、1); // afaik、これはインターネットのことをするコードで、UIより遅れている。これをdoinbackgroundに置くとmylat &にアクセスできず、 "loc.getLatitude"は存在する "onLocationChanged"メソッドで行わなければなりません。 ListAddressコードをdoinbackgroundの外に置いておくと、すべてが機能しますが、UIは明らかに遅れます。
誰かがmylat = loc.getLatitude()を取得する最良の方法をアドバイスできます。 & mylat = loc.getLatitude(); doinbackgroundメソッドの中に?
私はこれを試しました。エラーが発生しました。しかし、それは実行可能なように聞こえる。ここに私のコードがあります。(mylat、およびmylongはグローバルに宣言されていますが、これらのために2つの別々のgetメソッドがあるので、smsメッセージを送信する他のクラスは取得できます)http://pastebin.com/9b8Q3mFc – GrumP
実行はどこで呼び出されますか? – GrumP
AsyncTaskは別のクラスである必要があります。メインクラスで継承しないでください。内部クラスの例:http://pastebin.com/2F0NEbUh – red