안드로이드 개발 질문/답변
(글 수 45,052)
현재 카카오톡과 같은 모바일 채팅 어플을 개발중입니다.
채팅내용은 db에 저장되며, A라는 액티비티에서 커서아답터를 이용하여 리스트뷰를 구성하고 디비에서 호출하는 등의 작업을 하고 있습니다.
그리고 채팅을 할 때 마다 대화내용이 실시간으로 db에 저장됨과 동시에 리스트뷰에서 보여져야 하기 때문에 브로드캐스트 리시버(편의상 B 액티비티라 하겠습니다) 를 작성하였고, 브로드캐스팅이 될 때 마다 B에서 A의 adapter를 호출하는 방식으로 구성하려 합니다.
가령 이런식이 되겠지요.
Aactivity.mCursor.requery ( );
Aactivity.adapter.notifyDataSetChanged ( );
제 짧은 생각으로는 B에서 A의 커서를 호출하여 db를 requery 해주고, adapter에 데이터가 변경되었다는 notifyDataSetChanged을 호출해주면 될 것이라 생각하는데 계속 널포인트 에러가 생성되기도 하구요.
다른 방식으로 구현하면 좋지 않을까 하는데 마땅히 생각나지 않습니다.
더욱 좋은 방식이 있거나 혹은 해결 방안이 있으면 도움 부탁드립니다. 감사합니다.
2012.11.27 11:16:34
설명이 부족했습니다, 널포인트 에러는 해당 소스에서 일어납니다.
Aactivity.mCursor.requery ( );
이 부분이구요, 고또님 조언 감사드립니다.
2012.11.27 11:56:34
(추천:
1 / 0)

This method was deprecated in API level 11. Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back.
사용하지말라는데요?
브로드캐스트 리시버로 처리하는건 괜찮은 방법이라고 생각합니다.
다만 액티비티는 비활성화 되어있으면 애당 액티비티가 가진 데이터가 날아가는 경우가 있습니다.
창이 내려가면 채팅 종료를 할게 아니라면 서비스로 돌리시는걸 추천하며
널포인트 에러가 어디서 나는지 알아야 도움을 더 잘 드릴 수 있지 않을까 합니다.