2016-10-26 2 views
1

내 응용 프로그램에서 성가신 동작이 있습니다. 그것은 나의 costumers에게 문제를 일으키는 원인이되고있다.모달 대화 상자가 나타나지 않습니다.

이 앱에는 대화 상자 (모달)를 표시해야하는 몇 가지 사항이 있으며 사용자가 일부 필드를 채운 다음 대화 상자를 닫을 수 있습니다. 그래서 시스템은 자연 경로를 따른다.

결정된 순간에 정상적으로 작동합니다. 대화 상자가 표시되고 사용자가 해당 대화 상자와 상호 작용하며 닫습니다.

하지만 다른 대화 상자에서는 자동으로 대화 상자가 표시되지 않습니다. 사용자는 기기에서 외부 동작 (예 : 방향 변경, 화면 중앙 터치, 스크롤 제스처 실행 등)을 실행해야합니다. 현재 직관적이지 않은 행동입니다. 이 동작은 사용자가 내 응용 프로그램이 멈춘 것으로 생각하게합니다. 나에게 다이얼로그가 호출되었다는 것은 분명하다. 단순히 화면에 그려지지 않았다.

나는이 문제에 대해 읽어 보았습니다. 나는 비슷한 질문에 대한 연구를 성공하지 못했습니다. 그 원인은 EDT와 관련이 있다고 생각합니다.

요약하면 EDT 규칙을 위반하지 않고 대화 상자 모달을 호출 할 수 있습니다. 더 구체적으로이 문제를 어떻게 해결할 수 있습니까? 화면에 대화 상자를 표시하도록 요청하면 실제로 100 %의 경우에 나타납니다. 오늘은 무작위로 작동합니다.

추가 정보 : 내 응용 프로그램은 아직 Java 5를 사용합니다. Java 8로 마이그레이션 할 것을 권장합니까? (1) ===========

이 문제

======= 추가 정보는 장치 모델의 강하게 의존한다. MotoG3 (Android 6)에서이 문제는 예외입니다. 드물게 발생합니다. 내 갤럭시 노트 8은 반대입니다. 항상 발생합니다. 레노버 Vibe5 (안드로이드 6). 자주 발생합니다. 이 정보를 추가했습니다. 어쩌면 문제 그림을 복합화하는 데 도움이 될 수 있습니다.

추가 질문 : 템플릿으로 사용할 수있는 스 니펫을 쓸 수 있습니까? EDT의 일부 규칙을 어기 지 않고 대화 상자 모달 호출을 실행하려면 가능합니까? 이러한 문제를 감지합니다 시뮬레이터에서 EDT 위반 탐지 도구에

+0

예, Java 8로 마이그레이션하십시오. 마지막 java 5 릴리스는 7 년 전이었습니다. 그것은 고통이 될 것입니다 ... –

+0

귀하의 코멘트를 가져 주셔서 감사합니다. – hrugani

답변

0

켭니다. Dialog 통화의 문제가 될 수있는 사례를 조사하고 해결 방법을 모르는 경우 구체적으로 게시하십시오.

Java 8은 프로젝트 마이 그 레이션이 중요하지 않지만 관련이 없습니다.

+0

안녕 샤이. 시뮬레이터 사용 문제를 처리 할 수 ​​없습니다. Javascript와 Java 간의 양방향 통신이 작동하지 않습니다. (나는 왜 그런지 모르지만 이것은 다른 문제이다). adb (Android-sdk)를 사용하고 logcat-device에서 직접 EDT 위반에 액세스 할 수 있습니까? 양방향 통신은 앱이 물리적 장치에서 실행될 때 잘 작동합니다. 이 문제는 javascript에서 호출 된 Java 코드에서 발생합니다. – hrugani

+0

JavaScript에서 호출되는 Java 코드는 기본 브라우저 스레드에서 호출됩니다. UI와 상호 작용하려면 callSerially()가 필요합니다. –

+0

나는 이것을했다. 이미 Display CallSerially()를 사용하여 Dialog를 호출하려고했습니다. 결과는 더 나빴다.다음 메시지로 EDT 위반을보고하는 예외 : 내부 어플리케이션 오류가 발생했습니다 : java.lang.RunTimeException :이 메소드는 EDT에서 호출되어서는 안됩니다. – hrugani

관련 문제