현재 쓰레드를 사용해서 서버로 데이터를 전송하고 있습니다.
서버 주소를 입력받아서 처리하고 잇는데요
처음에 데이터를 넘기고 서버주소를 바꾸어 보내면 계속 이전 서버주소로 날라갑니다.
주소값을 바뀌었는데 그전 주소로 날라가더라구요.
이 현상이 아마 그전 쓰레드가 계속 동작하고 있어서 그런거같은데..
이전 쓰레드를 멈추고, 쓰레드를 다시 재실행?? 시키면 될거같기도 한데
맞는 건가요?? 이전 쓰레드를 멈추고 다시 쓰레드를 실행하려고하는데 잘 되지 않더라구요.
혹시 쉽게 따라할 수 있는 예제가 있을까요?
소스는 아래와 같습니다.
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());