Wydaje mi się, że synchronizacja na niewiele się tu zda. Zadeklarowałbym tą zmienną jako volatile, żeby uniknąć problemów z widocznością w innych wątkach po zapisaniu (http://www.ibm.com/developerworks/library/j-jtp03304/#2.0) Jeśli dobrze pamiętam to od gingerbread Dalvik wspiera JSR133. Ten kod mimo wszystko jest bardzo nieprzewidywalny. Najgorszym punktem jest przeniesienie informacji o tym, że jakiś wątek pracuje poprzez extras w intencie. Może po prostu zapisywać informację o uruchomieniu wątku wczytującego jeszcze w main threadzie i sprawdzać czy jest uruchomiony też w main thread, wtedy można też przenosić tą informację przez intent. W takim wypadku ustawienie tej zmiennej na false po zakonczeniu przetwarzania też dla bezpieczeństwa powinno odbyć się na main threadzie czyli trzeba by na końcu wątku przetwarzania przeskoczyć na wątek głowny. Ale tu pojawia się kolejny problem. Z tego co widzę to w wątku przetwarzania jest robione finish na aktywności - ale której aktywności? Przy obrocie ekranu tworzona jest nowa aktywność. Może czegoś tu nie ogarniam, proszę Rafał o korektę jeśli się mylę. Może ten wątek przetwarzania przenieść do nowej aktywności za pomocą jakiegoś fragmentu i funkcji FragmentManger.putFragment. To jest chyba najlepsze rozwiązanie. Można też użyć takiej starej funkcji http://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance%28%29 ale już nie jest zalecana