2014-01-29 5 views
0

다른 애플리케이션을 사용해야합니다. 첫 번째 애플리케이션에는 백그라운드 서비스가 있습니다. 두 번째 응용 프로그램은 textview로 활동합니다. 질문 : 첫 번째 앱의 서비스를 사용하여 두 번째 앱 실행을 감지하려면 어떻게해야합니까? 그리고 textview의 텍스트를 서비스에서 어떻게 변경합니까?Android : 다른 애플리케이션의 텍스트 뷰를 변경하는 방법

감사합니다.

+0

응용 프로그램은 다른 응용 프로그램에서 사용할 수없는 윈도우 토큰을 통해 바인딩되며, 백그라운드 서비스에 의도를 던지고 두 번째 응용 프로그램에서 브로드 캐스트 수신기를 통해이를 잡아 내고 변경할 텍스트를 전달합니다 번들을 통한 의도 – Tobrun

답변

0

해당 방송 수신자를 사용하여 다른 응용 프로그램을 업데이트하십시오.
서비스를 사용하는 경우 다른 응용 프로그램의 GUI를 업데이트하지 않습니다. broadcastreceiver가 원하는대로하는 것이 가장 좋습니다.

1

다른 응용 프로그램에서 실행을 감지 할 수 없으며 다른 응용 프로그램의 TextView를 직접 변경할 수 없습니다.

하지만 협력을 통해이를 달성 할 수 있습니다. 두 번째 응용 프로그램은 서비스 시작에 대해 알리고 서비스는 첫 번째 활동에 TextView 변경을 요청할 수 있습니다.

이것은 의도로 달성 할 수 있습니다. 첫 번째 애플리케이션의 액티비티는 서비스가 시작될 때 서비스를 시작할 수 있으며, 서비스는 브로드 캐스트를 보내거나 액티비티에 직접 보내어 TextView를 수정하도록 요청할 수 있습니다.

활동이 실행될 때만 알리고 이전 예제에서와 같이 깨우지 않으려면 바운드 서비스에 대해 this link을 읽으십시오. 여기서는 서비스에 바인딩하는 방법에 대한 완전한 예제를 제공하고 요청을 Activity로 되돌려 보내는 방법을 설명합니다.

이 예에서는 서비스가 클라이언트의 에 어떻게 응답 할 수 있는지 보여주지 않습니다. 서비스에서 응답하려면 클라이언트에 메신저를 만들어야합니다. 그런 다음 클라이언트가 onServiceConnected() 콜백을 받으면 메소드의 replyTo 매개 변수에 에 클라이언트의 메신저가 포함 된 서비스로 메시지를 보냅니다.

관련 문제