안드로이드 개발 질문/답변
(글 수 45,052)
현재 안드로이드 프레임워크를 공부하고 있습니다.
일반적으로 alertDialog를 띄우기 위해서는 스레드가 아닌 Activity의 Context를
넘겨줘야 한다고 알고 있습니다. 그런데 ANR이나 exception의 경우
다이얼로그를 띄우던데요, 분명 프레임워크내의 서비스나 그 아래 단에서 저런 기능을 제공할 텐데
액티비티가 아니잖아요??? 제가 알고 싶은건
1). 예외처리나, ANR을 처리하는 애(현재 액티비티가 아닌)가 화면에 다이얼로그를 띄우는 방법입니다.
물론 Activity 객체를 관리하고 있는 stack에 접근할 수 있다면
현재 top에 있는 액티비티를 다이얼로그 생성자에 넘겨주므로써
해당 액티비티 위에 다이얼로그를 표시할 수는 있을 것 같긴 한데,
그렇단 얘기는 어딘가에서 액티비티 객체를(context 처럼 다이얼로그 빌더에 넘겨줄 수 있는) 얻을 수 있다는 이야기 인듯 하구요
2). 프레임워크 내에 액티비티 객체 또는 그 스택을 관리하는 것이 있다는 이야기인가요?
실마리라도 찾을 수 있게 도와 주시면 감사드리겠습니다.
--공지사항을 확인하였습니다.--
일반적으로 alertDialog를 띄우기 위해서는 스레드가 아닌 Activity의 Context를
넘겨줘야 한다고 알고 있습니다. 그런데 ANR이나 exception의 경우
다이얼로그를 띄우던데요, 분명 프레임워크내의 서비스나 그 아래 단에서 저런 기능을 제공할 텐데
액티비티가 아니잖아요??? 제가 알고 싶은건
1). 예외처리나, ANR을 처리하는 애(현재 액티비티가 아닌)가 화면에 다이얼로그를 띄우는 방법입니다.
물론 Activity 객체를 관리하고 있는 stack에 접근할 수 있다면
현재 top에 있는 액티비티를 다이얼로그 생성자에 넘겨주므로써
해당 액티비티 위에 다이얼로그를 표시할 수는 있을 것 같긴 한데,
그렇단 얘기는 어딘가에서 액티비티 객체를(context 처럼 다이얼로그 빌더에 넘겨줄 수 있는) 얻을 수 있다는 이야기 인듯 하구요
2). 프레임워크 내에 액티비티 객체 또는 그 스택을 관리하는 것이 있다는 이야기인가요?
실마리라도 찾을 수 있게 도와 주시면 감사드리겠습니다.
--공지사항을 확인하였습니다.--
다이얼로그... 뷰의 입장에서 중요한건 뷰 혹은 윈도우입니다.
결국 다이얼로그도 뷰로 구성되고 어디에 붙느냐가 문제가 되는겁니다.
다른 뷰의 하위로 붙거나 어떤 윈도우의 하위로 붙느냐... 둘중 하나가 되는건데요.
토스트같은 경우는 DefaultWindow에 붙기 때문에 어디서든 표시가 가능합니다.
이 DefaultWindow는 라이브러리상으로는 감춰져있기 때문에 일반적인 방법으로 얻어올수 없고 따라서
App들은 Dialog를 띄워도 어떤 액티비티가 소유한 Window에만 띄울수 있으니
지금의 일반적인 Dialog들은 자신을 소유한 액티비티에서만 표시되는거죠....
예외로 인한 Dialog혹은 ANR역시 여기서 벗어나지 않을겁니다.
(이건 직접안봐서...)