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

Child Activity에서 Parent Activity의 함수 호출

0 추천

질문 올리신후, 답변이 달리면 따뜻한 감사 한마디와 채택 부탁드립니다.  

인사 한마디는 모든 사람들을 행복하게 만들어요. 덤으로 더좋은 좋은 답변도 불러옵니다.

-------------------------------------------------------------------------------------------------------------------------

 

 

안녕하세요,

 

Activity간의 기능? 신호? 전달을 여쭈어보고자 합니다.

 

우선 Activity의 큰 구성은 다음과 같습니다.

(혹시 더 필요한 정보가 있으시면 말씀해주세요)

===========================================

Parent Activity: P ( WebView )

Child Activity: C ( Module )

 

1. P에는 기존에 Java로 서버와 통신을 하는 함수가 있었습니다.

(WebView의 함수가 Java의 소켓통신 부분을 호출합니다.)

 

2. P에서 startActivityForResult()를 통하여 C를 호출합니다.

===========================================

 

C에서 P에 있는 서버와 통신하는 기능을 필요로 하는데요,

 

해당 통신 부분을 C에 다시 작성해 줄 수 있겠지만, 통신에 필요한 데이터들이 모두 P에 존재하여 재 선언하는데에는 큰 복잡함이 있을 것 같습니다.

또한, C Activitiy를 종료시키지 않은 상태에서 P에게 값전달 혹은 P의 함수를 호출하여야하기에 onActivityResult()를 사용할 수도 없는 것 같습니다.

 

P에 존재하는 값들을 이용하여 서버와 통신을 해야하는데, 현재로서 생각나는 방법으로는

1. P의 해당 함수를 호출한다. ( 해당 함수를 다른 Activity에서도 접근 할 수 있도록 수정해주어야 한다. )

2. PC에서도 접근 가능한 함수작성과 동시에 해당 함수 안에 WebView내의 Javascript함수를 호출하도록 구성한다.

 

라는 방법밖에 생각나지 않습니다.

 

--------------------------------------------

1. C에서 PonActivityResult()를 강제적으로 호출하는 방법은 없을까요?

2. C에서 P의 함수를 호출하려면 저 2가지 방법외에는 없는 것인가요?

 

 

긴글 읽어주셔서 감사합니다.

nkSong (1,000 포인트) 님이 2017년 9월 5일 질문

1개의 답변

0 추천
public class하나 만들어서  Activity를 static으로 선언해서 보관한다면,

해당 Activitiy의 Public methods를 호출 할 수 있습니다. (기술적으로는 가능하다는 이야기입니다)

그러나 그런 경우 반드시 해당 Activity가 메모리상에서 로드되어 있어야 겠지요.

안드로이드에서 먼저 수행된 Activity가 항상 메모리상에 로드가 안되어 있는 경우도 발생할 수 있습니다.

때문에 보통은, 통신 전용 Service를 만들어, 통신을 합니다.

그렇게 만들어 놓으면 모든 Activity에서 사용이 가능하죠.
Will Kim (43,170 포인트) 님이 2017년 9월 5일 답변
제 이전 질문에도 답변을 달아주시고 정말 감사합니다...

통신을 Service로 구현해 보아야 겠습니다~!

정말 감사드립니다...
...