2016-08-06 1 views
1

활동을 다시 만들 때 unresumable 실행중인 프로세스를 처리하기위한 올바른 방법을 궁금해.활동 레크 리 에이션 및 unresumable 작업

예를 들어, 서버 인증을위한 JNI 모듈이 있습니다. 내 활동의 OnCreateView()에이 객체의 새 인스턴스를 만들고 여기에 대한 콜백 루틴을 설정했습니다. 이제 버튼을 눌러 인증 프로세스를 비동기 적으로 시작합니다. 인증은 단 1 초입니다 만, 인증 과정에서 내 활동이 재현되면 (예를 들어 세로에서 가로로 전환하는 경우) JNI 객체가 재생성되고 인증 프로세스가 엉망이됩니다. 인증 프로세스의 상태를 저장할 수 없습니다.

그런 상황에 대해 어떻게 제안합니까? 아이디어는 활동 레크리에이션과 완전히 분리 된 서비스에서 인증 프로세스를 실행하는 것입니다. 다른 간단한 접근 방법이 있는지 없는지 궁금합니다.

+1

좋은 사례는 아무 것도없는 "retain fragment"를 사용하여 프로세스를 유지하는 것입니다. http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html –

+0

@KingfisherPhuoc 이것은 흥미로운 것 같습니다. 나는 그것을 철저히 조사 할 필요가있다. :) 당신이 집을 누르고 빨리 돌아와서 앱을 나가면이 방법이 효과가 있습니까? (다른 레크리에이션 상황으로) – Afshin

답변

0

매니페스트에서 활동에 configChanges를 추가하십시오.

<activity 
      android:name="com.yourActivity" 
      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 
+0

예를 들어 화면 방향을 사용했는데이 방법으로 해결할 수 있습니다. 그러나 이것은 활동 레크리에이션을위한 일반적인 해결책이 아닙니다. 집에 가서 앱으로 빨리 돌아 가면이 방법으로는 해결할 수없는 또 다른 활동 레크리에이션입니다. 좀 더 일반적인 방법이 필요해. – Afshin

+0

그런 다음 onConfigurationChanged를 재정의하고 필요한 것을 수행하십시오. –

0

방향을 변경했을 때 활동을 다시 작성해야합니까?

그렇다면 @Naveen이 제안한 작업을 수행하여 작업을 다시 작성하지 않을 수 있습니다.

관련 문제