2012-04-08 5 views
0

내 앱은 단편을 사용하여 세로보기 모드의 ListView 또는 가로보기 모드의 ListView 및 "세부 정보"보기를 나란히 표시합니다. AsyncTask를 시작하는 ActionBar의 메뉴 항목도 있습니다. 문제는 AsyncTask가 실행되는 동안 사용자가 디스플레이를 세로에서 가로로 회전 할 때 (또는 그 반대로), AsyncTask가 종료된다는 것입니다. 그 속성이 자동으로 가로/세로보기로 전환 프래그먼트를 방지 추가AsyncTask로 단편 전환

<activity android:name="ListingFragment" android:configChanges="keyboardHidden|orientation" /> 

을 그러나 : 정지로부터 AsyncTask를 해결하기 위해, I는 configChanges가 AndroidManifest를 속성에 추가. AsyncTask를 죽이지 않고 조각이 자동으로보기를 전환하도록하는 방법이 있습니까?

답변

1

활동이 종료되기 전에 asynctask의 인스턴스를 저장해야합니다. onRetainCustomNonConfigurationInstance()을 사용하여 저장할 수 있습니다. 그런 다음 생성시 getLastCustomNonConfigurationInstance()을 사용하여 검색 할 수 있습니다. 그런 다음 onCreate에서 활동을 asynctask에 다시 "첨부"할 수 있습니다.

+0

나는 onRetainCustomNonConfigurationInstance()가 더 이상 사용되지 않으며 문서에서 setRetainInstance()를 사용한다고 말합니다. –

+0

그것은 다른 목적을위한 것입니다. Fragment 인스턴스가 액티비티로 파기되지 않는다는 것을 의미하는'setRetainInstance (true)'를 호출하면, 액티비티는 유지되고 (전달됩니다), 새로운 액티비티는 새로운 액티비티를 생성하는 대신이 프래그먼트를 가져옵니다. 'onRetain ...'은 더 이상 사용되지 않지만, 활동 파괴 - 생성주기를 통해 객체의 인스턴스를 유지하는 다른 방법을 제공했다는 사실을 알지 못합니다. – dmon

+0

잘 알고 있습니다. 그런 다음 onRetainCustomNonConfigurationInstance()를 사용합니다. 응답 주셔서 감사합니다. –