初めて、バックグラウンド サービスを処理するために HandlerThread.start() を呼び出します。すべての作業が完了したら、HandlerThread.quit() を呼び出してこのスレッドを終了したいと思います。
次に、この Handler を 2 回目に開始し、HandlerThread.isAlive() を確認すると、isAlive() は false を返しますが、HandlerThread.start() によって再度 HandlerThread を呼び出すと、
しかし、 IllegalThreadStateExceptionを取得しました。なぜですか?
handlerThread.start() を安全に再度呼び出す前に、どうすれば本当に HandlerThread を停止できますか?
onCreate(){
...............
CurrentLocationPresenter =
new CurrentLocationPresenter(getApplicationContext(),mHandler);
}
public void onClick(View v) {
int id = v.getId();
switch (id){
case R.id.showplacebutton:
showPlaceInMapActivity();
break;
case R.id.showgpsbutton:
if (mCurrentLocationPresenter.isAlive()){
break;
}
mCurrentLocationPresenter.start();
break;
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == CurrentLocationPresenter.WHATCODE){
mCurrentLatlng = (LatLng) msg.obj;
mTextView.setVisibility(View.VISIBLE);
if (mCurrentLatlng!=null) {
mTextView.setText(mCurrentLatlng.toString());
}
mCurrentLocationPresenter.getLooper().quit();
}
}
};