안드로이드 개발 질문/답변
(글 수 45,052)
액티비티가 이동된 후에 다시 finish()를 이용하여 이전 액티로 돌아 왔을 경우 이동되기 전과 같은 창의 띄워 후게 하고 싶은데요
애디트 뷰나 이런 정보들이 있는 액티비티 저장 방법은 많은 곳에 나와 있어서 이해하기가 쉬웠는데
리스트를 저장 하게 하는 정보는 없더라구요
혹시 리스트뷰를 가지고 있는 액티비티도 저장이 될까요..?
조언 부탁 드리겠습니다
아.. 지금 같은 경우에는 파싱을 다시 해 버리더라구요.. 그리고 다시 리스트뷰를 만들어주고..
2010.10.14 10:33:00
onResume에서 파싱하고 계신가요? 아니면 onStart나...
엑티비티의 생명주기를 보시고
onCreate나 onStart 에서 파싱을 해보시는게 어떨까요?
엑티비티의 생명주기를 보시고
onCreate나 onStart 에서 파싱을 해보시는게 어떨까요?
2010.10.14 10:49:58
답변 감사 합니다 ^^
지금 onCreate 에서 파싱을 하고 있구요 파싱이 약 5초 정도 걸려서 따로 프로그래스를 써서 이용 하고 있습니다..
그런데 finish를 이용하여 이전 액티로 갔을때 다시 파싱을 해 오고 있더라구요(프로그래스 뜨면서 다시 파싱이 촤라락 뜨는..)
어찌보면 당연 한 경우일수도 있는데 이걸 안하게 할 방법이 없을까 해서 질문을 올렸습니다 ^^;;
어플 사용자 분들은 까다로워서 그 5초동안 다시 불러 오는 작업이 짜증날수도 있으니까요.. -_-;
2010.10.14 10:57:06
이전 Activity 가 호출 되었을 때 다시 onCreate 가 불린다는게 이상한데요?
onCreate 가 다시 호출이 되었다는 것은 Activity 가 죽었다가 다시 되살아나는 경우 밖에 없다고 알고 있습니다.
새로운 Activity 에서 메모리를 너무 많이 써가지고 이전 Activity 가 죽었다가 다시 되살아나는 경우에는 onCreate가 다시 불릴텐데요.
항상 이렇게 된다면 어디선가 코딩이 잘 못 된 것 같은데요.
2010.10.14 11:08:39
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="co.kr.Leaderse" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/logo_hj"
android:label="@string/app_name">
<activity android:name="Intro" android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".StudentService" android:screenOrientation="portrait"/>
<activity android:name="WebView_List"></activity>
<activity android:name="Main" android:screenOrientation="portrait"></activity>
<activity android:name="JobInfo" android:screenOrientation="portrait"></activity>
<activity android:name="Gongji" android:screenOrientation="portrait"></activity>
<activity android:name="WebView_List_list"></activity>
<activity android:name="WebView_List_Gongji"></activity>
<activity android:name="WeatherList" android:screenOrientation="portrait"></activity>
<activity android:name="WeatherList_sub" android:screenOrientation="portrait"></activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
</manifest>
크롬 우저라서 이렇게 올리게 되네요;;
2010.10.14 11:21:05
이동하기 전의 acitivity도 finish()가 호출되고 있는게 아닌지 확인해 보세요.
finish()를 호출하지 않았으면 onCreate()가 아니라 onResume() 부터 실행됩니다.
finish()를 호출하지 않았으면 onCreate()가 아니라 onResume() 부터 실행됩니다.
2010.10.14 12:15:49
대부분 잘못 알고 계시는 것 같습니다.
finish()를 호출하지 않았더라도 onCreate() 부터 실행이 될 수도 있습니다.
기본적으로 액티비티 비활성화 시점 (onPause() 콜백 메서드가 불린 시점) 이후로는 액티비티가 살아있다는 보장을 할 수 없습니다.
메모리가 부족하면 죽을 수 있는거죠. 즉, 위의 증상은 정상적인 상태입니다.
startActivity()를 통해 호출하는 액티비티가 메모리를 많이 잡아먹는 놈일 가능성이 큰 것 같군요. 아니면 테스트하는 단말의 메모리가 극도로 부족할 수도 있구요.
이전 액티비티 그대로 나오던데.. 안 그렇던가요?;;;