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

쓰레드와 엑티비티 통신 질문드립니다. 도와주세요!!!!!

0 추천
A엑티비티에서 쓰레드를 작동 시킵니다.  약 10초뒤에 결과가 나옵니다.

쓰레드 작동과 동시에 B엑티비티를 실행합니다.

A엑티비티에서 실행한 쓰레드의 결과 값을 실행되어 있는 B엑티비티로 전달하여 B엑티비티에서 TextView를 변경하고 싶습니다.

B엑티비티에 리시버를 등록하고

A 에서 브로드캐스트로 B엑티비티로 결과값을 전달하여 리시버에서 TextVIew 를 변경하는 방법뿐이 없는건가요?

 

다른 방법이 또 있을까요?

B엑티비티는 빈화면에서 대기하고 있는데 A엑티비티의 쓰레드에서 결과값이 나오면 B에서 이벤트 식으로 받아서 B엑티비티의 TextView 를 변경하고 싶습니다.
summit (760 포인트) 님이 2013년 3월 7일 질문

3개의 답변

+1 추천
static Method를 쓰셔도 되구요

interface를 쓰셔도 되구요.

둘다 브로드캐스트 리시버를 쓰지 않아도 됩니다 ' ㅅ'

저는 이거 밖에 생각이 안나네요.
갈무리 (12,430 포인트) 님이 2013년 3월 7일 답변
static Method 로 방법은 알고 있었는데 static은 효율적으로 좋지 못하다고하여..기피했습니다.
interface로는 새로운 방법인데.. 어떻게 구현하는지 알려주실수 있으신가요
아하 이런 방식이군요..
근데 하나 더 궁금한게 있습니다.
static 방법과 interface 방법모두 B엑티비티에서 A엑티비티의 데이터를 대기하고 있다가 값이 너무 늦게 와서 B엑티비티를 종료하고 다시 A엑티비티로 돌아 왔습니다.
그럴때는 어떻게 되나요?
static 이나 인터페이스 같은 경우 변경되어질 B엑티비티의 TextView 가없어 졌으니 오류가 발생하나요?
B엑티비티가 종료될때 onDestory에서 인터페이스 등록을 취소해줘야되나요?
static과 interface 두가지의 경우 A Activity에서 B Activity가 현재 존재 여부를 파악 하셔야 됩니다. 그렇게 되면 B Activity의 onDestroy에서 interface를 초기화 하지 않아도 자연스럽게 컨트롤이 되지 않을까요?^^

만약 B activity가 존재 하지 않을때 TextView 등 B Activity와 연관된 변수 혹은 뷰들이 선언 혹은 컨트롤 될 때 Exception 이 발생하게 됩니다.
0 추천
Asynctask의 onpostexcute는 어떨까요?
wind (2,240 포인트) 님이 2013년 3월 7일 답변
B엑티비티에서 Asynctask로 쓰레드를 돌리라는 말시시죠?;
꼭 A엑티비티에서 쓰레드를 실행해야만해서요.
제가 먼가 잘 못 생각한듯 합니다. 윗 분 말씀처럼 interface를 쓰셔야 겠네요 저 링크 최고의 답변이시네요...^^ 잠시나마 혼란을 드려 죄송합니다.
0 추천
쓰레드 작업완료를 확신할수없는상태에서 먼저 액티비티전환을 한다는것부터가

옳지않은구조인듯 합니다.

쓰레드에서 통신작업을 한다고 하면 인터넷연결상태에따라 지연이 발생하거나

원하는데이터를 가져오지 못할수도있습니다.

그런 예외사항에대한 처리가필요한데 먼저 액티비티전환을 해버리면 골치아파지겟지요.

 

A액티비티에서 쓰레드실행될때 ProgressDialog등을 사용하여 로딩중 메세지를 띄우고

쓰레드 작업완료시 Handler를 통해서 dialog 중지하고 B액티비티로 전환하면서 데이터를 같이 넘겨주는 방식이 좋을것같네요.
얼룩돼지 (15,720 포인트) 님이 2013년 3월 8일 답변
...