안드로이드 개발 질문/답변
(글 수 45,052)
소켓을 서비스에 구현한 이유?
1. 8개의 엑티비티중 4개의 엑티비티가 소켓통신을 통해 값을 주고 받아야합니다.
2. 브로드캐스트리시버를 통해서 어플 종료시에도 정보를 받아야합니다.
방법1. 처음엔 서비스에서 소켓을 생성해서
intent를 이용해서 서비스와 엑티비티가 byte[]배열 값을 주고 받는 형식으로 구현하려고 하였습니다.
하지만 이에 관해서 검색하면 검색할수록
직접적으로 byte[] 배열을 intent를 통해서 주고 받을 수 없다는 결론이 나왔습니다.
정말 불가능한가요?
방법2. 그래서 이번에는 엑티비티에서 서비스에 byte[] 배열을 전송할 때
1.엑티비티에서 byte배열을 db(android.SQLite)에 저장후
2.서비스로 db에 값을 입력했다는 유무를 알려줍니다.
3.서비스에서는 db에 저장된 값을 통하여 byte[] 배열을 받습니다. 그리고 소켓을 통하여 외부로전송합니다.
서비스에서 엑티비티로 byte[]배열을 전송할 때 또한 이 방식으로 설계할 생각입니다.
이것이 가능한가요?
읽어주셔서 감사합니다^^




정확한 사항을 잘 몰라서 머라 말씀 드리기는 어렵습니다만..
String 클래스 생성자중에 byte 배열을 넘겨서 String 객체를 만드는 것이 있습니다..
new String(byte [] aaa, "UTF-8") 머 요딴식으로 인코딩 값을 주어서 하는 것이지요..
SQLite DB에 byte 배열을 저장을 하셨다고 하셔서 추측을 해보지만 거기에 저장할 정도라면 최종 형태가 binary 포맷이 아닌..
우리 눈으로 볼 수 있는 의미가 있는 데이터형태..란 걸로 추측이 되서..
일단 String으로 변환이 가능하다면 나머지야 쉽죠..String을 Int형이나 Long 형 등으로 변환하는 방법은 얼마든지 있으니까요..
만약 byte 배열이 여러개 데이터를 합쳐서 구현한 것이라면 그럴 경우 byte 배열 구성시 구분자를 두어 분리가 가능하게 한 뒤에..
그 구분자를 이용해 분리를 할수 있고..
또는 각 데이터들의 가장 최대 배열 크기를 알 수 있다면 그런 예약을 통해 일종의 메시지 포맷화 해서 작업을 하셔도 될듯 한데요..