2016-07-19 4 views
1

Xamarin.Android에 mvvmcross를 사용하십시오. ShowFragment 메서드에서 MvxCachingFragmentCompatActivity가 ExecutePendingTransactions를 수동으로 호출하는 이유는 무엇입니까? 이 통화로 수행 된 작업은 무엇입니까? 보시다시피 탐색하는 동안 여러 장치에서 약 두 번째가 걸릴 수 있습니다. 감사합니다.MvxCachingFragmentCompatActivity가 수동으로 ExecutePendingTransactions를 호출하는 이유는 무엇입니까?

답변

1

다른 동작을 수행하기 전에 다음 동작이 commit() 처리에 의존 할 경우 기본적으로 필요합니다. 특히 MVVMCross를 들어

: 변경 사항이 적용되었다 경우

OnFragmentChanging(fragInfo, ft); 
ft.Commit(); 
SupportFragmentManager.ExecutePendingTransactions(); 
OnFragmentChanged(fragInfo); 

OnFragmentChanged-이벤트는 분명히에만 호출합니다. 코드 스 니펫 중 하나를 MvxCachingFragmentCompatActivity에서 가져 오면됩니다.

API documentation. FragmentTransaction

FragmentTransaction.commit()에 최선을 다하고 있습니다, 비동기 프로세스의 주 스레드에서 을 실행할 예정이다. 이러한 보류중인 작업을 즉시 실행하려면이 함수를 호출 (메인 스레드에서만 가능) 할 수 있습니다. 의 모든 콜백 및 기타 관련 동작은이 호출에서 수행되므로 이 어디에서 호출되는지주의해야합니다.

+0

감사합니다. Cyriac. 주행 속도를 향상시키는 방법을 조언 해주십시오. 이제는 매우 복잡한 조각도 (Nexus 4의 경우) 2 초 정도 열 수 있기 때문입니다. 그 이유는 무엇입니까? 어쩌면, 반성, axml에서 바인딩을 만들 때? 코드에서 바인딩으로 변경하면 내 속도가 향상 될 수 있습니까? – Karrde

+0

바인딩 (https://github.com/MvvmCross/MvvmCross/issues/1342)에서 몇 가지 변경 사항을 수행 했으므로 최신 MVVMCross 버전을 사용하는 것이 좋습니다. 내 애플리케이션은 액티비티로 약 1 초 만에 탐색하며 두 개의 다른 조각이있는 단편과 한 단편의 tablayout이있는 반면 다른 단편에는 실시간 플로팅 차트가 있습니다 (모든 바인딩은 axml에서 수행됩니다). 그래서 그것은 아마도 네비게이션 중에 무엇을하고 있는지에 달려 있습니다. – Cyriac

+0

확인. 하지만이 외에도 모든 탐색 프로세스가 주 스레드이므로 애니메이션 파급 효과 문제가 발생합니다. ShowViewModel 전에 지연 추가를 제외하고 anythinh 할 수 있습니까? – Karrde

관련 문제