Android で何かをプログラミングしていて、遅延を作成したいと考えています。アクティビティ クラス スレッドに追加すると、アプリはデータを変数に実装した後にスタックしますが、(postDelay を使用して) ハンドラーを使用すると正常に動作します。1.なぜ?
コード (mapView と userPointOverlay はクラスのプライベート ローカル変数です):
スレッドの使用:
new Thread(new Runnable() //2.5sec delay between switches
{
@Override
public void run()
{
try
{
Thread.sleep(5000);
mapView.getOverlays().remove(userPointOverlay);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}).start();
ハンドラーの使用:
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
mapView.getOverlays().remove(userPointOverlay);
}
}, 5000);
2.スレッドとハンドラーの主な違いは何ですか? 私は、ハンドラーがスレッド上で実行されていることを理解しました(メインスレッドのCPU時間と共有します)、それは正しいですか?
- ハンドラーからクラスのローカル変数にアクセスできるようです。しかし、スレッドでは、Eclipseはローカルクラス変数をスレッドに書き込むことができましたが、開始時にこのローカルのアドレスはスレッドローカルとは異なり、スレッドの実行時にこのクラスローカルにアクセスできません。
ありがとうございました!!!