2013-10-10 4 views
3

Xamarin.Mobile 구성 요소의 최신 릴리스는 Android 용 작업 기반 API를 사용하지 않습니다. > 인해 활동의 라이프 사이클 현실에 안드로이드 기반의 API는 비동기 API는 이제 [폐기] 특히 안드로이드에 대한 표시되어 작업 <의 취약성을 감안할 때Xamarin.Mobile : 더 이상 사용되지 않는 것으로 표시된 작업 기반의 API

: 릴리스이에 간단히 주석을 지적한다.

누군가가 취약성을 설명 할 수 있습니까?

답변

3

기본적으로 Task 전체 앱 수명주기 경계를 사용하면 문제가 발생합니다. 카메라 Activity이 Android에서 시작되면 사실 완전히 새로운 앱을 시작합니다. 앱이 포 그라운드에서 더 이상 실행되지 않으므로 Android는 앱을 종료하고 카메라가 돌아올 때 다시 시작하는 권한을 갖습니다. 이런 일이 발생하면 Task 인스턴스가 파괴되어 await 또는 ContinueWith이 실행되지 않습니다. Task/Android 문제가 아니라 단순히 Xamarin.Mobile의 디자인 결함 일뿐입니다.

결과적으로 마법 API는이 상황을 적절하게 처리하는 유일한 방법이므로 OnActivityResult을 사용하는 것이 좋습니다. 알림을 받으면 새로운 API GetMediaFileExtraAsync은 여전히 ​​Task<MediaFile>을 반환합니다.

(출처 : Xamarin.Mobile)

+0

설명 해 주셔서 감사합니다. 문제가 교차 앱 경계에 관한 것인지 몰랐습니다. – yallie

+0

앱 수명주기 경계를 말할 때 "파격적인"작업을 의미합니까? 결과에 대한 다른 활동을 호출하거나 오리엔테이션 변경에 대한 재 작성을 포함하여 수명주기 이벤트를 수행합니까? 혼란이있는 것처럼 보일 것입니다 : [여기] (http://stackoverflow.com/a/24637838/11683)와 [여기] (http://forums.xamarin.com/discussion/comment/34405/#Comment_34405) 그들은 Rotaion이 괜찮다고 말합니다, [here] (http://stackoverflow.com/q/22612775/11683) 그것은 낙관적 인 것으로 보이지 않습니다. 그리고 나는 아직도 기다리고있는 조합에 관한 확실한 지침과 모범 사례를 찾기 위해 고심하고 있습니다. OnCreate/OnRestart 등 – GSerg

+0

내 실험에 따르면 현재 '대기중인'작업과 활동 사이의 화면 회전이 끊어 지므로 [비동기 예제] (http://components.xamarin.com/gettingstarted/)가 어떻게되는지 잘 모르겠습니다. xamarin.mobile)은 콘솔에 인쇄하는 것과는 대조적으로 UI 항목의 내용을 변경하려는 경우 작동 할 수 있으며 작업이 수행되는 동안 사용자는 화면을 회전했습니다. – GSerg