마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsncTask 관련 질문을 드립니다.

0 추천
안녕하세요. 어플을 제작하고 있는 초보 개발자입니다. 다름이 아니라 제가 AsyncTask를 이용하던 도중 발생하는 문제를 적절히 해결할 방법을 도저히 찾지 못해 이렇게 질문을 드립니다.

제가 현재 제작하고 싶은 부분이 초기 로그인을 하면 전체 사이트를 보여주는 gridview 화면 (각각의 사이트가 동그란 아이콘으로 되어 있습니다.)에서 원하는 사이트 아이콘을 누르고 다음 버튼을 누르면 메인 액티비티 화면이 뜨고 하단에 배치된 recyclerview에서 이전에 눌렀던 아이콘이 뜨는 한마디로 즐겨찾기 기능을 구현하고 싶습니다.

제가 구현한 방식은 전체 사이트들이 뜨는 gridview 화면에서 특정 아이콘을 누를 경우 gridview 내에서 특정 아이콘의 position을 (첫번째 아이콘이라면 position = 0) 회원 정보가 있는 mysql에 접속하여 테이블에 로그인된 회원의 정보가 있는 row에 특정 아이콘의 position 정보를 입력하는 과정을 AsyncTask을 이용해 구현하였습니다.(가령, position이 1,4,5인 아이콘을 눌렀다면, mysql table에 user,password,(1,4,5)이런식으로 저장을 하게 됩니다.)

---여기까지는 항상 잘 작동함을 확인 하였습니다.

근데 문제는 이 다음 과정인데요. mysql에 저장된 postion 정보들을 메인 액티비티에 배치된 recyclerview에 각각 넣는 과정에서 가끔 문제가 생깁니다.(10번을 시도하면 3번정도는 항상 recyclerview에 아무 아이콘이 뜨지 않더군요..)

제가 현재 구현한 코드는 mainactivity에서 mysql에서 각각의 position들을 정수형 Arraylist에 넣는 작업을 AsyncTask로 구현하였습니다.(위의 경우라면 keylist 배열에 (1,4,5)가 저장됩니다.) 이 작업을 시행하는  Asynctask class 이름을 편의 상 problemTask라고 지칭하겠습니다. 이 problemTask에서 keylist라는 배열에 mysql의 사이트 들 position 정보를 넣은 후 keylist 배열에 있는 position 숫자들에 대한 정보(아이콘의 img,txt)만 recyclerview에 연결하는 과정을 구현하였습니다.

근데 앞서 말했던 대로 10번중 3번은 mainactivity가 켜질때 아이콘들이 recyclerview에 나타나지 않습니다. mysql에는 정확히 잘 들어가있는데도 불구하고요. 디버그를 해보니 아이콘이 뜨지 않을 때는 위에서 말씀드렸듯이 problemTask를 execute하는 코드를 실행하지 않고 지나치더군요. 결국 keylist라는 배열에 position 정보가 저장되지 않고 넘어가게 되어 아이콘이 뜨지 않았습니다.

저는 데이터를 불러올때 AsyncTask를 사용하였으며, problemTask를 recyclerview와 어댑터를 연결하기 전에 problemTask를 execute한 코드를 넣었는데 어쩔때는 이게 실행되고 어쩔때는 실행되지 않는 이유를 잘 모르겠습니다.
익명사용자 님이 2018년 10월 1일 질문

1개의 답변

0 추천
Excute가 실행되었을때 정상적으로 종료되나 확인 한번 해보세요.
일단 님이 2018년 10월 1일 답변
...