열심히 구글링해서 서버에서 데이터를 받아올때 xml 파싱을 해오면 된다는걸 알게되었다!
근데 사이트에 있는 코드를 그대로 복붙했는데 안됨. 오류나면서 어플이 자동으로 꺼진다.
하나씩 디버깅 해봤지만 여전히 이유는 알 수 없고,
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) 여기서 어플이 꺼지는 걸 발견!
다시 열심히 구글링을 해봐서 얻은 결과!
1. 일정 버전 이상에서는 Main Activity에서 Thread를 만들어 쓰면 안된다.
=> Thread class를 따로 선언해줘서 run 함수 안에서 try, catch 하기
2. Thread class에서 setText가 제대로 안된다. - 어플을 내렸다 다시 들어가야 내용이 바뀐게 적용된다.
=> Handler를 사용
삽질 삽질 후 성공했다 소스코드 공개
1. data.xml : 메모장,워드패드로 만들어서 ftp로 서버에 업로드
2. activity_main.xml
3. MainActivit.java : Thread와 Handler이용! 코드가 너무 길어서인지 다 안올라 간다 대신 파일첨부!
class ConnThread extends Thread{ Handler mHandler; ConnThread(Handler h){ mHandler = h; } void setparam(StringBuffer sBuffer,TextView txtResult){ this.sBuffer=sBuffer; this.txtResult=txtResult; } public void run(){ try { String urlAddr = "http://xxx.dothome.co.kr/data.xml"; URL url = new URL(urlAddr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); if(conn != null) { conn.setConnectTimeout(20000); conn.setUseCaches(false); //conn.connect(); if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStreamReader isr = new InputStreamReader(conn.getInputStream()); BufferedReader br = new BufferedReader(isr); while(true) { String line = br.readLine(); if(line == null) { break; } sBuffer.append(line); } br.close(); conn.disconnect(); } } xml = sBuffer.toString(); } catch(Exception e) { Log.e("다운로드 중 에러 발생", e.getMessage()); } parse(); } ... } public class MainActivity extends Activity { ... final Handler handler = new Handler() { public void handleMessage(Message msg){ String text = msg.obj.toString(); txtResult.setText(text.toString()); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtResult = (TextView)findViewById(R.id.txtResult); StringBuffer sBuffer = new StringBuffer(); ConnThread st1 = new ConnThread(handler); st1.setparam(sBuffer,txtResult); st1.start(); } ... }
4. AndroidManifest.xml : Permission 설정을 꼭 해주어야 한다!!
이제 고민거리는 이걸 어떻게 표현하느냐!다.... 허헣
MFC | OpenCV 개발환경 (0) | 2014.11.14 |
---|---|
Tistory | 게시글 썸네일(Thumbnail) 지정하기 (0) | 2014.10.19 |
Tistory | 최근포스트(Recent Post) 접기 (0) | 2014.10.15 |
Tistory | HTML을 이용하여 소스코드 올리기 (0) | 2014.10.05 |
Android | 소켓통신 (1) | 2014.08.22 |
Andriod | 내비게이션 탭 (0) | 2014.07.13 |
Android | 프로젝트생성 (0) | 2014.07.13 |
Android | 개발환경 (0) | 2014.07.11 |