마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서버 주소값이 변경되지 않는 이유가 쓰레드때문일까요?? [closed]

0 추천

현재 쓰레드를 사용해서 서버로 데이터를 전송하고 있습니다.

서버 주소를 입력받아서 처리하고 잇는데요

처음에 데이터를 넘기고  서버주소를 바꾸어 보내면 계속 이전 서버주소로 날라갑니다.

주소값을 바뀌었는데 그전 주소로 날라가더라구요.

이 현상이 아마 그전 쓰레드가 계속 동작하고 있어서 그런거같은데..

이전 쓰레드를 멈추고, 쓰레드를 다시 재실행?? 시키면 될거같기도 한데

맞는 건가요?? 이전 쓰레드를 멈추고 다시 쓰레드를 실행하려고하는데 잘 되지 않더라구요.

혹시 쉽게 따라할 수 있는 예제가 있을까요?

 

소스는 아래와 같습니다.

public class locationactivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        locationcreate();

        Intent intent = new Intent(locationactivity.this, PatientFhir.class);
        startActivity(intent);
        finish();
    }

    public void locationcreate() {
        final Location location = new Location();
        location.setName("Home");
       
        Thread validateThread = new Thread() {
            @Override
            public void run() {
                String severURL = ServerURL.getSharedPreference(locationactivity.this, "SERVERURL");
                Log.d(TAG, "서버 주소 보기 " + severURL);

              MethodOutcome outcome = RestClient.getClient(severURL).create()
                        .resource(location)
                        .prettyPrint()
                        .encodedJson()
                        .prefer(PreferReturnEnum.REPRESENTATION)
                        .execute();

                OperationOutcome operationOutcome = (OperationOutcome) outcome.getOperationOutcome();

                Boolean hasError = false;
                if (operationOutcome != null) {
                    for (OperationOutcome.Issue nextIssue : operationOutcome.getIssue()) {
                        if (nextIssue.getSeverityElement().getValueAsEnum().ordinal() == IssueSeverityEnum.ERROR.ordinal()) {
                            Log.e(TAG, nextIssue.getDiagnostics());
                            hasError = true;
                        }
                    }
                }
                if (hasError) {
                    return;
                }
                Log.d(TAG,"Created a new patient:\n" + outcome.getId().getValue());// outcome.getId().getValue()) 주소 값이 나옴.

            }
        };
        validateThread.start();
    }
}

 

앱을 종료시켰다가 다시 하거나 아니면 아래와 같이 서버주소를 입력값을때 프로세스를 죽이면 서버값이 변하더라구요.. 해결방법좀 알려주세요 ㅠㅠ

android.os.Process.killProcess(android.os.Process.myPid());
질문을 종료한 이유: 다른 부분에서 오류라서 수정완료
쿠쿠부다스 (6,470 포인트) 님이 2017년 2월 13일 질문
쿠쿠부다스님이 2017년 2월 13일 closed

1개의 답변

0 추천
 
채택된 답변
thread인스턴스.interrupt(); 함수를 호출하시면 쓰레드 내에서 interruptException으로 빠지게 됩니다.

이를 활용해서 쓰레드를 멈출수 있습니다.
Development Guy (70,570 포인트) 님이 2017년 2월 13일 답변
쿠쿠부다스님이 2017년 2월 13일 채택됨
...