2016-12-01 1 views
1

코드 명 1로 작성된 내 응용 프로그램은 기본 양식에서 카메라 미리보기를 보여줍니다. Android (iOS)에서 작동하도록 기본 인터페이스 구현을 사용했습니다.코드 명 원에서 이전 양식이 완전히 사라지지 않음

앱에는 정식 버전으로 업그레이드하기위한 앱 구매가 포함되어 있습니다. 그것이 사용자에게 업그레이드를 제안하는 양식이 정기적으로 표시되는 이유입니다. 또한 나중에 업그레이드하여 전체 버전 양식으로 업그레이드하여 사라 지도록 선택하고 카메라 미리보기가있는 기본 양식을 표시하도록 선택할 수 있습니다.

실제 기기에서는 정식 버전으로의 업그레이드가 완전히 사라지지 않고 기본 양식에 회상이 있습니다. 이 경우 카메라 미리보기가 화면의 일부에 표시되고 앱 버튼이 표시되지 않습니다. 그러나 몇 초 후에 사용자가 화면을 터치하면 기본 양식이 완전히 표시되고 업그레이드 양식에 대한 회상은 사라집니다.

UI 스레드에서 너무 많은 작업이있는 것 같지만 사용자가 버튼을 눌러 업그레이드 양식을 닫을 때 new MainForm(theme).show()으로 전화를 걸었습니다. 그럼이게 괜찮을까요? CN1 시뮬레이터에는 edt 위반이 표시되지 않지만 시뮬레이터에는 카메라 미리보기가 없습니다.

또는 레이아웃에 구성 요소를 추가 한 후 MainForm에서 revalidate()를 호출해야합니까? 이 회상을 사라지게하려면 실제로 무엇을해야합니까?

정말 감사 어떤 도움,

답변

0

이런 일들은 항상 추적하기 어려운하지만 난 피어 구성 요소가 새로운 형태와 어떤 식 으로든 충돌 같은데요.

과 같이해야하는 경우가 아니면 postInvalidate으로 전화하지 않도록주의하십시오. 그러면 도면 논리와 충돌 할 수 있으므로 가능한 경우 일반적으로 제한하고 피해야합니다.

또한 부모 양식의 불투명도를 변경하지 않았는지 확인하십시오. 예 : 양식 UIID를 변경 한 경우

+0

감사의 말씀을드립니다. postInvalidate를 호출하거나 상위 폼의 불투명도를 변경하지 않습니다. – HelloWorld

+0

솔루션을 게시했습니다. @Shai 그것을보고 문제와 관련이 있는지 말하고 싶습니까? – HelloWorld

+1

다른 문제가 발생할 수 있으므로 invokeAndBlock은 완전히 별도의 스레드를 열어 문제를 일으킬 수 있습니다. 이미 네이티브 OS 스레드에서 렌더링 된 네이티브 구성 요소와 관련된 문제가 Codename One EDT의 양식과 충돌하여 세 번째 스레드가 해당 문제를 해결했지만 행운이고 문제가 될 수 있습니다. . –

0

해결책이있는 것으로 보입니다. 실제로 저는 카메라와 표면을 초기화하는 원시 메소드가 있습니다. EDT에서이 메서드를 실행 한 다음 새 MainForm을 표시했습니다.

실제로 나는 invokeAndBlock() 블록에 초기화 메소드를 채택했습니다. 이제 지연의 종류가 눈에 띄지 않는 것처럼 보입니다 (나는 그것을 볼 수 없습니다). 내 자신의 논리에서는 invokeAndBlock()이 별도의 스레드에서 초기화 작업을 수행하고 완전히 준비가되었을 때 (카메라와 표면보기가 표시 될 준비가 되었기 때문에) MainForm을 보여줄 수 있다는 사실을 설명 할 수 있습니다.

실제 솔루션 인 @Shai 일 수 있습니까?

관련 문제