오늘은 Intents에 대해 배우고 서비스 활동에 바인딩했습니다. 서비스에서 데이터로 데이터를 전송하는 것은 매우 쉽고 좋은 방법입니다. 서비스를 시작하는 활동을 테스트하고 싶었는데,이 서비스는 웹 페이지에서 데이터를 얻기 위해 호출합니다. 나는 액티비티를 서비스에 바인딩하여 액티비티가 서비스 메소드를 호출하고 결과를 토스트 할 수있게했다. 서비스 메소드에서 나는 웹 페이지를 호출하고 데이터를 리턴한다. 내가 그것을 테스트했을 때 null 포인터 예외를 얻었습니다. 저는 올바른 방법으로하지 않을 것입니다. 아무에게도 이것을 올바르게 구현하는 방법에 대한 제안이 없습니다.서비스를 시작하고 데이터를 반환
1
A
답변
1
여기서 상당히 견고한 스레드 동기화 문제를 다루고 있습니다. 어떤 종류의 청취자 패러다임을 등록하면 서비스가 생성하는 데이터에 대한 청취자로 활동을 등록하는 데 훨씬 도움이됩니다. 현재는 서비스와 활동간에 전혀 동기화가 이루어지지 않으므로 Activity가 준비되기 전에 서비스에서 결과를 가져 오려고합니다. 청취자 패턴 또는 옵서버 패턴에 대해 논의하는 많은 자원이 있습니다.
서비스가 실제로 제대로 작동하는지 여부는 알 수 없습니다. 나는 둘 사이의 대화를보고 있습니다.
+0
많은 스레딩 문제가 있음을 알고 있습니다. 여기, 나는 1 차적인 의도로 주변을 어지럽 혔고, 핸들러를 들여다 보았습니다.하지만 스레딩 문제를 해결해야 할 것 같습니다. –
0
서비스에서 결과를 반환 할 때 ResultReceiver 인터페이스를 구현하고 putExtra를 통해 수신자 객체를 서비스에 전달하는 것이 좋습니다. 귀하의 서비스에서 수신자 객체를 가져오고 receiver.send() 번들로 아무것도 보내지 않는 기능을 호출하십시오. [적어도 IntentService]에서이 패턴을 테스트했습니다.
편집 : 완벽한 구현을 위해 this 게시물을 확인하십시오.
관련 문제
- 1. 알림 서비스를 언제 시작하고 중지해야합니까?
- 2. Android 서비스를 이미 시작하고 있습니까?
- 3. Android 서비스를 시작하고 활동 내 데이터에 액세스하십시오.
- 4. 웹 서비스를 사용하기 전에 웹 서비스를 시작하고 설정하십시오.
- 5. Android : 원격 서비스를 다시 시작하고 다시 바인딩하기
- 6. 활동에서 서비스를 시작하고 준비가 될 때까지 기다리십시오.
- 7. 서비스를 제대로 시작하고 안전하게 유지하는 방법은 무엇입니까?
- 8. 서비스 나 버튼의 클릭으로 서비스를 시작하고 자체
- 9. JSON 형식으로 데이터를 반환 자바 웹 서비스를 소비하는 방법
- 10. 브라우저를 시작하고 winform 응용 프로그램에서 데이터를 전달합니다.
- 11. 웹 서비스를 통해 linq 결과가 반환
- 12. 원격 컴퓨터에서 서비스를 시작하고 중지 할 수 없습니다.
- 13. Windows XP에서 Windows 서비스를 시작하고 중지하는 더 쉬운 방법
- 14. Android - 지정된 시간에 내 서비스를 시작하고 중지하는 방법?
- 15. 일정에 따라 Windows 서비스를 시작하고 중지하는 방법은 무엇입니까?
- 16. 백그라운드에서 서비스를 시작하고 해당 서비스에서 활동을 시작하는 방법은 무엇입니까?
- 17. 반환 데이터를 올바르게
- 18. 스마티 : 데이터베이스에서 데이터를 반환
- 19. CouchDB 데이터를 XML로 반환
- 20. CURLOPT_HEADER 반환 데이터를 제거하십시오
- 21. 반환 JSON 데이터를 PHP에서
- 22. mysql_fetch_array가 중복 데이터를 반환
- 23. 프로세스를 시작하고 반환 코드를 받거나 너무 오래 지속되면 처리를 중단하십시오.
- 24. 파이썬 -에 대한 반환 값 문은 내가 파이썬에서 시작하고
- 25. 한 활동에서 안드로이드 서비스를 시작하고 다른 활동에서 서비스를 중지하는 방법은 무엇입니까?
- 26. 응용 프로그램이 백그라운드로 오면 서비스를 시작하고 응용 프로그램이 포어 그라운드에있을 때 서비스를 중지합니다.
- 27. C# WCF 서비스를 통한 출력 값 반환
- 28. GWT 시작하고
- 29. 구조체 데이터를 루비의 해시로 반환
- 30. 반환 된 정보에서 데이터를 제거합니다.
코드의 일부를 보지 않고도 말할 수 없습니다. –
코드 –
을 추가했습니다. 알아두면 도움이 될 것입니다. 충돌이 일어나는 곳이 어디입니까? 건초 더미에서 바늘을 치는 대신에 :). –