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

BroadcastReceiver에서 AsyncTask를 이용한 웹페이지 호출

0 추천

안녕하세요,

리시버에서 웹페이지를 호출해야할 상황입니다.

웹페이지는 그냥 post로 값만 넘겨주면 알아서 db upadate시켜주는 기능인데..

액티비티에서 정상작동하는 소스 붙여서 구현했는데..에러도 아니고...서버쪽엔 로그가 찍히지도 않고...

아무런 반응이 없습니다...

 

asynctask쪽 연결부분 소스입니다.

ArrayList<NameValuePair> post = new ArrayList<NameValuePair>();
			post.add(new BasicNameValuePair("DVID",   this.appID));
			post.add(new BasicNameValuePair("DEVICE-TYPE", "And"));
			post.add(new BasicNameValuePair("ONOFF", "Y"));

			// 연결 HttpClient 객체 생성
			HttpClient client = new DefaultHttpClient();

			// 객체 연결 설정 부분, 연결 최대시간 등등
			HttpParams params = client.getParams();
			HttpConnectionParams.setConnectionTimeout(params, 5000);
			HttpConnectionParams.setSoTimeout(params, 5000);

			HttpPost postData = new HttpPost(
					SERVER_URL + "updateDB.do");

			try {
				UrlEncodedFormEntity entity = new UrlEncodedFormEntity(post,
						"UTF-8");
				postData.setEntity(entity);
				client.execute(postData);

				return EntityUtils.getContentCharSet(entity);

			} catch (Exception e) {
				e.printStackTrace();
				
			}

 

호출은 리시버 onReceive() 메서드에서 했습니다.

김울프 (860 포인트) 님이 2014년 6월 17일 질문

1개의 답변

0 추천
 
채택된 답변
BroadcastReceiver의 경우 onReceive 호출이 끝나고나면 추가적인 동작이 있으면 안됩니다.

이 경우 onReceive 호출이 끝난 후에도 AsyncTask가 동작중이어서 문제가 되는 것으로 보입니다.

onReceive 안에서 Service를 실행한 후 해당 Service에서 AsyncTask를 실행하세요. (이렇게하는 것은 문제가 없습니다.)
익명사용자 님이 2014년 6월 17일 답변
김울프님이 2014년 6월 17일 채택됨
답변감사합니다. 몇시간 쨰 헤맸는데^^
...