ProgressDialog
을 사용자에게 보여 주면서 비교적 짧은 (2-3 초) 백그라운드 작업을 수행하고 싶습니다. (작업 시작 부분에 ProgressDialog
을 표시하고 끝에 표시하고 싶습니다.)백그라운드 작업 중에 구성 변경 사항을 처리하는 가장 최신의 방법은 무엇입니까?
여러 접근법을 시도했지만 모두 제대로 해결할 수없는 단점이 있습니다.
난 시도한 것들 :
AsyncTask
메모리 누수 문제를 이용하여 해결 될 수
WeakReference
합니다 (Activity
에 대한 참조를 유지하도록),하지만이 다시 호출 할 수있다 newActivity
인스턴스가 실행 중일 때 다시 생성되면 인스턴스가 변경됩니다 (예 : 방향 변경의 경우).
은 머리가없는AsyncTask
Fragment
에 싸여 :는
onCreate()
의 외부Fragment
트랜잭션을 커밋 종종Can not perform this action after onSaveInstanceState
IllegalStateException
나에게 제공합니다.commitAllowingStateLoss()
을 사용하면 적절한 해결책이 아닐 수 있습니다.onCreate()
에Fragment
을 추가하면 전혀 필요하지 않더라도Activity
에 붙어 있다는 것을 의미합니다. 거대한 잔인한 느낌입니다.구현할 때 엉덩이에 통증이 있습니다. 예를 들어 여러 개의
AsyncTask
이있는 경우입니다. 나는Fragment
을 생성해야하는데, 이는AsyncTask
내부 클래스를 포함하고 있습니다.이 클래스는 기분이 좋지 않습니다. 각 작업마다 별도의Fragments
을 작성해야합니다. 관리하기가 다소 어렵고 혼동을 줄 수 있습니다.IntentService
+LocalBroadcastManager
내가 (
onCreate()
에서, 그리고onDestroy()
에 등록을 취소) 가능한 한 빨리 내 수신기를 등록, 여전히 가능하다면 방송은 오리엔테이션 오는이 방법 내 문제는 짝수 변경, 이후onDestroy()
그리고 전에onCreate()
, 그래서 나는 방송을 놓친다.
구글은 그렇게 열심히 구성 변경을 처리 할 수 있습니다 이유를 정말 이해가 안 (끈적 방송은되지 않으며 구글에 따라 사용할 수 없습니다).
어떻게해야합니까?
미리 감사드립니다.