0

ロケーションの更新を受信したときにスレッドでコールバックを行うために、次のコードを作成しました (これがメイン スレッドです)。

Handler handler; // this Handler is initialized in the following thread
Runnable r = new Runnable() {
    public void run() {
        Looper.prepare();
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.d("MSG", msg.toString());
            }
        };
        Looper.loop();
    }
};
Thread t = new Thread(r);
t.start();


LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
    public void onLocationChanged(Location location) {
        Log.d("UPD", "onLocationChanged");
    }
    [...]
}, handler.getLooper());

更新が受信されたときにログに MSG が表示されることを期待しています。代わりに、UPD 行は表示されますが、MSG は表示されません。

では、ルーパーを渡したときの requestLocationUpdates の正しい動作は何ですか?

4

0 に答える 0