실제 구동 소스는 아니고 제가 짜놓은 소스의 간략한 흐름입니다.
아래와 같은 구조로 작동시킬때 Test에 설정된 변수에 접근하는게 맞는지 궁금하네요.
클래스,인스턴스,지역 변수를 보아하니 전혀 옳바르지 않은거 같은데
로그를 하나씩 찍어보면 찍히는게 보이긴 하거든요? 오류로 인한 접근인지 알고싶습니다.
한수 가르침 부탁드릴게요
run에서 while문을 돌리고 hanlder 안에서 맞는 결과값을 받아 abcd에 넣어 while문을 달출한다
는 그림이거든요.
public class Test implements Runnable{
public String abcd ;
public Test(String abcd) {
this.abcd = abcd;
}
@Override
public void run() {
do{
if(abcd=="hihihi"){
break;
}
try {
Message msg = new Message();
msg.obj = abcd;
Thread.sleep(1000);
}catch(InterruptedException es){
es.printStackTrace();
}
}while(true);
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
public synchronized void handleMessage(Message msg){
String dum = String.valueOf(msg.obj);
if(dum=="hello"){
abcd="bye";
}
FirebaseDatabase.getInstance().getReference().child("market")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot item : dataSnapshot.getChildren()) {
if(결과값이 참일 경우){
abcd = "hihihi"; <------ 이게 제대로 접근되고 있는게 맞나요?
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
}