자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 델파이 10.1 - 안드로이드 서비스 개발시 'activity not found, maybe you are in a service' 에러
2017.03.30 11:43
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
델파이 10.1 버전으로 안드로이드 서비스 프로그램 개발을 시험해보던중 에러가 나서 질문합니다.
서비스 unit 상에 TCPClient or PushEvent 와 같은 컴포넌트를 올리고 build 시 activity not found, maybe you are in a service 오류가 뜹니다.
서비스는 당연히 UI 관련된 컴포넌트를 사용할 수 없는 환경임을 잘 알고 있습니다만. 위와 같은 소켓통신 모듈이나 푸시 이벤트와 같은 non visual 모듈을 이용하면 문제없이 작동할것이라 생각했지만..에러가 나네요.
계속 찾아보니 서비스에서는 FMX.platform.andorid 의 TAndroidHelper.activity 항목이 사용되면 안되는 사항인듯한데..
위와 같이 TCP 또는 PUSH 관련 모듈을 unit에 추가할 경우에 TAndroidHelper.activity 를 참조해서 사용하여 문제가 발생하는 거 같습니다.. 델파이 자체의 결함인것 같은 생각이 듭니다만...심증일 뿐입니다.
혹시 위 오류사항을 경험해보신분중에서 해결하신분이 있으시면 조언 부탁드립니다.
우회할수 있는 방법이라도 있으면 좋겠네여.. 서비스로 TCP소켓통신과 PUSH 이벤트를 구현해야되는 중요이슈가 있어서 말입니다.
수고하세요.
댓글 3
-
험프리
2017.04.19 16:37
-
봄이아빠
2017.04.19 17:37
답변에 감사드립니다.
제가 시도해보고자한것은 서비스에서 푸시이벤트를 Receive 하면 스마트폰 중앙에 즉시 팝업창을 띄우게 하고 싶었습니다.
기존에는 앱이 종료된 상태에서 푸시메시지가 수신되면 앱을 실행한다음에 해당 푸시이벤트 문자열을 팝업창에 띄우게 했는데요..
서비스에서 푸시를 구현하면 굳이 앱을 실행하지 않고서도 바로 푸시이벤트 문자열을 팝업창에 보여줄수 있지 않을까라는 생각을 프로그램에 적용해보고 싶었습니다. 앱을 실행하지 않고 서비스에서 푸시이벤트를 받아서 직접 팝업창을 띄워주면 되지 않을까? 라는 생각을 적용해본겁니다.... 이걸 해결할 아이디어가 있다면 굳이 서비스를 사용하지 않아도 되겠지요.. 앱이 종료된 상태에서 푸시메시지 수신시 즉시 팝업창을 띄워서 이벤트문자열을 표시해주는 방법이죠. 이야기가 좀 장황하게 나열된점 양해바랍니다..^^
-
이지현
2017.05.16 10:26
혹시.. 해결하셨나요???
저도 푸시수신시 팝업창을 띄우고 싶은데 헤매고 있어서요..
혹시나 해결하셨거나 정보 있으면 공유해주시면 감사하겠습니다!
Delphi 델파이 10.1 - 안드로이드 서비스 개발시 'activity not found, maybe you are in a service' 에러
2017.03.30 11:43
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
델파이 10.1 버전으로 안드로이드 서비스 프로그램 개발을 시험해보던중 에러가 나서 질문합니다.
서비스 unit 상에 TCPClient or PushEvent 와 같은 컴포넌트를 올리고 build 시 activity not found, maybe you are in a service 오류가 뜹니다.
서비스는 당연히 UI 관련된 컴포넌트를 사용할 수 없는 환경임을 잘 알고 있습니다만. 위와 같은 소켓통신 모듈이나 푸시 이벤트와 같은 non visual 모듈을 이용하면 문제없이 작동할것이라 생각했지만..에러가 나네요.
계속 찾아보니 서비스에서는 FMX.platform.andorid 의 TAndroidHelper.activity 항목이 사용되면 안되는 사항인듯한데..
위와 같이 TCP 또는 PUSH 관련 모듈을 unit에 추가할 경우에 TAndroidHelper.activity 를 참조해서 사용하여 문제가 발생하는 거 같습니다.. 델파이 자체의 결함인것 같은 생각이 듭니다만...심증일 뿐입니다.
혹시 위 오류사항을 경험해보신분중에서 해결하신분이 있으시면 조언 부탁드립니다.
우회할수 있는 방법이라도 있으면 좋겠네여.. 서비스로 TCP소켓통신과 PUSH 이벤트를 구현해야되는 중요이슈가 있어서 말입니다.
수고하세요.
댓글 3
-
험프리
2017.04.19 16:37
-
봄이아빠
2017.04.19 17:37
답변에 감사드립니다.
제가 시도해보고자한것은 서비스에서 푸시이벤트를 Receive 하면 스마트폰 중앙에 즉시 팝업창을 띄우게 하고 싶었습니다.
기존에는 앱이 종료된 상태에서 푸시메시지가 수신되면 앱을 실행한다음에 해당 푸시이벤트 문자열을 팝업창에 띄우게 했는데요..
서비스에서 푸시를 구현하면 굳이 앱을 실행하지 않고서도 바로 푸시이벤트 문자열을 팝업창에 보여줄수 있지 않을까라는 생각을 프로그램에 적용해보고 싶었습니다. 앱을 실행하지 않고 서비스에서 푸시이벤트를 받아서 직접 팝업창을 띄워주면 되지 않을까? 라는 생각을 적용해본겁니다.... 이걸 해결할 아이디어가 있다면 굳이 서비스를 사용하지 않아도 되겠지요.. 앱이 종료된 상태에서 푸시메시지 수신시 즉시 팝업창을 띄워서 이벤트문자열을 표시해주는 방법이죠. 이야기가 좀 장황하게 나열된점 양해바랍니다..^^
-
이지현
2017.05.16 10:26
혹시.. 해결하셨나요???
저도 푸시수신시 팝업창을 띄우고 싶은데 헤매고 있어서요..
혹시나 해결하셨거나 정보 있으면 공유해주시면 감사하겠습니다!
우선 저도 서비스를 심도있게 다루지 못해 좋은 답변을 드리기 어렵습니다.
답변 이전에, 서비스에서 푸시와 소켓을 사용하시려는 이유가 궁금합니다.
제 생각으로,
푸시(TPushEvent)의 경우 서비스 사용을 줄이기 위해 안드로이드 자체 푸시 서비스를 사용하기 위한 개념이기 때문에 서비스에서 사용하는 것의 큰 의미가 없을 것 같습니다.
소켓(TIdTCPClient 등)의 경우 서비스에서 사용 시 상당한 주의를 기울여야 할 것 같습니다. 그 이유는, 1) 서비스는 항상 유지되지 않습니다. 2) 서비스 내에서 소켓연결을 유지할 수 없습니다. 그렇기 때문에 서비스에서 소켓을 구현하는 경우 앱에서 데이터를 받아서 소켓 연결 후 데이터 송수신 후 소켓 연결 해제 등의 제한된 작업이 될 것으로 보입니다.
어떤 내용을 구현하실지 모르겠지만,
만약 제가 구현한다면, 앱에서 푸시기능을 구현하고, 푸시를 받은 앱에서 소켓을 통해 서버에 전달하고 연결을 끊는 형태로 제작할 것같습니다.
참고로, 제가 10.2 도쿄 버전에서 안드로이드 (로컬 인텐트)서비스 만들어, 소켓과 푸시이벤트 컴포넌트 추가 후 빌드하니 빌드는 잘 되네요.
(대신 디바이스에 넣어서 테스트 해보지는 못했습니다.)
마지막으로, 혹시 비슷한 이슈가 있는지 퀄리티 포털에서 검색해 보시기 바랍니다.
http://tech.devgear.co.kr/delphi_news/409911
만약, 도움이되는 이슈가 없고, 버그라고 생각되시면 퀄리티 포털에 등록해 주시면 제품 발전에 큰 도움이 될 것 같습니다.
(혹시나 영어가 익숙치 않으시면 구글 번역기 등의 도움을 받으셔도 됩니다. 중요한 이슈라고 판단되면 담당자가 내용을 다시 작성합니다.)