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

안드로이드 쓰레드 익셉션 처리 질문

0 추천
public synchronized void getUserList(Listener l) {

		try {
			HttpClient client = new DefaultHttpClient();
			String getURL = "http://hunny123234.appspot.com";
			HttpGet get = new HttpGet(getURL);
			HttpResponse responseGet = client.execute(get);
			HttpEntity resEntityGet = responseGet.getEntity();
			if (resEntityGet != null) {
				// process result
				String temp = EntityUtils.toString(resEntityGet);
				String temp1 = temp;

				for (String line : temp1.split("\n")) {
					String[] split = line.split("&");
					getUserStringList(split);
					
				}
			}
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
		}
	}

	private String[] getUserStringList(String[] split) {
		for (int i = 0; i < split.length - 3; i += 4) {
			if (!UserManager.getUserManager(null).checkDuplicationByPhoneNumber(split[i + 1]))
				UserManager.getUserManager(null).addUser(split[i], split[i + 1], split[i + 2], split[i + 3]);
		}
		List<User> ul = UserManager.getUserManager(null).getList();
		String[] strList = new String[ul.size()];
		int i = 0;
		for (User u : ul) {
			strList[i] = u.toString();
			i++;
		}
		return strList;
	}

위와 갘은 http 통신을 하는 함수를 라이브러리로 만들어서 제공하고자 합니다.

제가 액티비티로 만들었을 땐 버튼 클릭을 했을 때 쓰레드로 돌려주면 실행이 됐는데 이렇게 함수로 제공해준 뒤 호출을 할 때는 받아주는 객체? 가 없어서 쓰레드 오류가 나더라구요.

콜백함수 형식으로 해줘야 한다고 생각하는데.. 제가 따로 리스너를 만들어서 네트워크 통신을 하는 부분에서 처리를 해주면 될까요??

리스너 생성하는 부분을 찾아봤는데 도통 감이 오질 않아서 조언 듣고자 이렇게 질문 남깁니다.

 

안드로이드펍 고수님들 초보에게 리스너를 어떤식으로 만들어서 사용해야할지 답변 부탁드릴게요..ㅠㅠ

익명사용자 님이 2014년 5월 30일 질문

1개의 답변

0 추천

리스너로하셔도되고..

CallBack 함수로 해도되지만.. 일단리스너가 편하니깐.. 

일단 데이터를 넘겨줄 리스너를 하나 생성을하구요 그다음에 클래스생성자쪽에 넣는게 낫겠죠? 메서드면 호출할때마다 넣어

줘야하니 리스너는 데이터 받을 위치에서 생성을해서 넘겨주면 될거구요..

리스너 생성하는걸 모르시는건 아니겠죠?..흠

public interface OnRequestStatusListener {

    public void onRequestStart();

    public void onRequestFinish(Object $data);

}

머대략 이런식으로 하면 되긋죠..?

lesky (2,140 포인트) 님이 2014년 5월 30일 답변
...