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

A,B,C Activity간 이동시 B Activity에 Data를 유지한상태로 pause 시켰다가, 다른 Activity를 사용중에 다시 B를 불렀을때 B를 그대로 불러올수 있는 방법은 없을까요??

0 추천
현재 Binder를 이용한 통신 프로그램을 구현 하고있습니다.

Activity 가 A,B,C 3개가 있을 때, 시작 Activity는 A로 시작하고 각 Activity 이동은 Service에서 Intent -> StartActivity를 이용하고 있습니다.

이경우에 A -> B 로 이동하면 A를 finish 해주고 B 를 Start 해주도록 구현하였는데

B를 부를 때 B 안에 ListView 에 Data를 매번 그려주는데 시간이 너무 오래 걸려서  B 를 부를때 매번 Finish - >Create하지 않고, Pause 만 시켜두고 A와 C등을 이용하다가 B를 부르면 Resume 을 하여 새로 Activity를 생성하지 않고 다시 불러주는 방법을 찾고있는데 어떤 방법을 이용해야 할지 잘 모르겠습니다.

 

Activity를 Pause상태로 오래두면 Stop되고 , 다른 Activity 상태에서 B Activity를 강제로 Resume 부터 시작하는 방법도 없는것 같고 어떤 방법으로 불러도 Resume이 아닌 Create가 적용되어 Pause시켜둔 Activity가 뒤에 쌓이고 계속 새로 생성이 되서 쌓이는것이 문제인데요, 어떤 방법이있을지 질문드립니다.

여러개의 Activity가 아닌 두개의 Activity라면, 처음 A->B를 이동할때 StartActivity해주고 B가 Create할 때 , Service에 값을 주어 2번째 경우를 구분하여, 2번째 경우부터는 StartActivity가 아닌 A를 Back 하여 B를 Start 해주는 방법은 괜찮을까요????

 

구현방법이아니더라도 제가 하려는 방법의 문제가있다면 어떤것이 문제인지 지적해주시거나 의견주시면 감사하겠습니다.
상괭이 (120 포인트) 님이 2014년 2월 22일 질문

1개의 답변

0 추천

 Listview가 생성되는게 부담이라면 , Activity 호출 로직을 복잡하게 바꾸는 것 보다,

ListView를  service의 멤버 변수로 가지고 있다가  B Activity 사용시 addView 해 주는 방식으로 하는 방식으로 재 활용하면 호출 로직도 쉽고 재활용 될 듯 합니다.

사악미소 (65,330 포인트) 님이 2014년 2월 22일 답변
답변 감사합니다. Service의 멤버변수로 가지고 있다가 Add View를 해주더라도 Data가 몇백개 1000~2000개 이상 이면, B Activity가 켜질 때 ListView의 Data가 몇백개가 Add 되면서 그려주는데 시간이 많이 걸리는 것 같습니다. 그래서 처음 한번 그려주고, 그걸 따로 갱신을 요청하지 않으면 List를 그대로 유지하고, 다른 Activity를 이용 할 땐 B Activity를 BackGround에 유지해두려고 생각중입니다.
...