좋아, 나는 안드로이드에 익숙하지 않다, 나는 블루투스를 통해 arduino와 인터페이스하는 응용 프로그램을 만들려고 노력하고있다. 나는 샘플 BluetoothChat을보고 "서비스", 그것으로 생성 된 스레드와 MainActivity 사이에서 통신하기 위해 Handler를 사용하는 방법을 보았습니다. 문제는 블루투스 서비스를 사용해야하는 활동이 두 개 이상 있다는 것입니다. 각 활동에 대한 나는이 같은 핸들러가 있습니다처리기 및 다중 활동
private BtService(){
btm = BluetoothAdapter.getDefaultAdapter();
mHandler= new Handler(Looper.getMainLooper());
}
내가 메시지를 보낼 필요로 할 때 나는 이렇게 :
mHandler = new Handler(){
@Override
public void handleMessage(Message message) {
switch (message.what){
case BtService.CHANGE_STATE:
if (message.arg1 == BtService.STATE_CONNECTING){
Intent i = new Intent (MainActivity.this,ConnectedActivity.class);
startActivity(i);
}
break;
}
}
};
와 서비스 생성자에서 나는이있어
private synchronized void setState(int state){
mHandler.obtainMessage(CHANGE_STATE, state, -1).sendToTarget();
mState = state;
}
그러나 메시지는 여러 다른 Handlers에서 수신되지 않습니다. here에 "특정 스레드에 대한 모든 처리기 개체가 동일한 메시지를받습니다." 그래서 나는 그 문제를 이해할 수 없다. 활동이 시작될 때마다 해당 활동에서 메시지를 수신하도록 처리기가 선언 한 서비스에 전달해야합니까? 이것은 효과가있는 것 같지만, 나에게는 좋은 습관이 아닙니다.
은 미안하게하지 않은 경우,이
환호 helpfull이다
희망을 (당신은 두 개 이상의 활동에 이것을 사용 모시) "진정한"질문은 "스레드의 모든 처리기가 API 교육에 언급 된 것과 동일한 메시지를 받거나 잘못 이해하고있는 것이 사실인가"입니다. 어쨌든, 답변 해 주셔서 감사합니다. – Campig