안드로이드 개발 질문/답변
(글 수 45,052)
Main.java가 탭위젯 TabActivity 구요
Tab1.java
Tab2.java
Tab3.java
이런식으로 개별 Activity가 있습니다.
Tab위젯에서 각 탭당 Activity 를 호출하게 만들었습니다.
최초로 탭이 선택될때 onCreate가 호출되더군요
첫번째 탭이 보일때 남어지 탭들도 사전 로딩하게 하고싶은데요(물론 보이지는 않아야겠죠)
public void onCreate(Bundle savedInstanceState) {
에서 데이터를 부르는데 시간이 걸려서
첫째 탭이 보이는중에 남어지 탭들도 로드를 하고싶은데 가능한가요?
Tab1.java
Tab2.java
Tab3.java
이런식으로 개별 Activity가 있습니다.
Tab위젯에서 각 탭당 Activity 를 호출하게 만들었습니다.
최초로 탭이 선택될때 onCreate가 호출되더군요
첫번째 탭이 보일때 남어지 탭들도 사전 로딩하게 하고싶은데요(물론 보이지는 않아야겠죠)
public void onCreate(Bundle savedInstanceState) {
에서 데이터를 부르는데 시간이 걸려서
첫째 탭이 보이는중에 남어지 탭들도 로드를 하고싶은데 가능한가요?
2010.12.30 11:17:52
그냥가자님 그럼 질문을
탭하나에서 시간이 걸리는 데이터를 로드해야된다고 가정하면
설계를 변경을 Main에서 Thread로 따로 로드하게 만들게 변경한다면
Main의 subThread에서 구한 데이터를
Tab1,Tab2,Tab3에 데이터를 공유하는 방법에 대해 질문드립니다.
객체 데이터라서 sql를 통하거나,SharedPreferences 를 통하지 않고 할수있는 방법 있나요?
공유해야되는 자원중에는 이미지도 있고 텍스트 데이터도 있고해서요..위방법으로하면 변환과정을 또 거쳐야될듯해서요...
자바에서 SingleTone같은 설계를 안드로이드에서도 될려는지..이렇게 객체를 관리하는 객체를 만들어서 모든 Activity에서 공유사용가능한가요?
아님 어떤식으로 공유하시는지...
2010.12.30 11:33:49
서비스를 만들고 서비스에 로딩을 요청하신다음에
데이터가 필요하면 서비스에 broadcast로 요청하시고, 서비스에서 broadcast로 응답하면 됩니다.
데이터를 저장한 객체는 Parcelable로 만드시구요... ArrayList를 보낼수 있으니 검색해보시기 바랍니다.
비트맵은 Parcelable이긴 하지만 그것을 직접 주고 받는것은 비효율적이므로
리소스 ID나 파일명을 통해서 데이터를 주고 받는편이 나을듯합니다.
이미지 로딩에 시간이 걸린다고 하시면 이미지 로딩은 Activity에서 AsyncTask를 통해 로딩하시면 됩니다.
데이터가 필요하면 서비스에 broadcast로 요청하시고, 서비스에서 broadcast로 응답하면 됩니다.
데이터를 저장한 객체는 Parcelable로 만드시구요... ArrayList를 보낼수 있으니 검색해보시기 바랍니다.
비트맵은 Parcelable이긴 하지만 그것을 직접 주고 받는것은 비효율적이므로
리소스 ID나 파일명을 통해서 데이터를 주고 받는편이 나을듯합니다.
이미지 로딩에 시간이 걸린다고 하시면 이미지 로딩은 Activity에서 AsyncTask를 통해 로딩하시면 됩니다.




설계를 조금 개선해야 할듯합니다.
일단 "데이터 로드에 시간이 걸린다"라는 부분이 있는데 그것때문에 나오는 사이드 이펙트는
"데이터 로드를 백그라운드로 돌린다"는 방식으로 풀어야 합니다.
탭을 미리 로드하는 방식은 딱히 방법이 없기도 하지만, 있다고 하더라도 바람직하지 않습니다.
예를 들면 2번탭에 데이터 로드에 시간이 오래걸린다 가정했을때,
처음 어플 실행하자마자 빠르게 2번 탭을 터치하여 넘어가면
어차피 2번탭 로드에 시간이 걸려서 ANR 구경하는것은 동일합니다.
서비스를 활용하여 데이터 로드를 위임하고,
엑티비티에서는 Progress Dialog등으로 사용자에게 안내를 하는것이 가장 바람직한 방법으로 보입니다.