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

스레드 사용에 있어 질문드립니다.

0 추천
아직 배워야 할것이 많네요 기초가 부족하여 질문드립니다.

저는 365일 꺼지지않으며 3초에 한번씩 서버에서 데이터를 받아 갱신해주는

프로그램을 만들고있습니다.

Thread 를 사용함에 있어 저는 아래와 같은 구조로 사용하였습니다.

new Thread(new Runnable() {
    public void run() {
        // 실행 내용
    }
}).start();

작동은 잘되지만 사람들이 메모리 릭으로 죽을수도 있다라고 이야기 합니다.
그래서 아래와 같이 수정하였습니다. 이렇게 수정한다고 해결이 될까요?

Runnable runnable = new Runnable() {
    public void run() {
        // 실행 내용
    }
}

Thread thread = new Thread(runnable);
thread.start();

메모리 누수가 나지 않도록 스레드를 돌리는 법을 모르겠네요

그리고 이것이 스레드때문에 메모리가 올라가는지 핸들러 처리하면서 올라가는지 정확하게는 알수없지만 문제가 있다고 하니 궁금합니다.

 

아시는 분은 도와주시면 감사하겠습니다.
bellfe0402 (1,770 포인트) 님이 2015년 12월 29일 질문

3개의 답변

0 추천

365일 꺼지지않으며 3초에 한번씩 서버에서 데이터를 받아 갱신해주는

앱 설명에 이렇게 써놓으면 아무도 설치안할 겁니다.

익명사용자 님이 2015년 12월 29일 답변
서버와 데이터 통신을 계속 하는 구조로 만드는 거라 설치하는 사람들의 타겟이 정해져있습니다.^^
답변 다신분의 말대로 이렇게 사용하면 부하가 엄청납니다. 그래서 그걸 최소화 할수 있는 방안은 계속 찾고 연구하고 리스크를 줄일려고 노력중입니다.
하지만 컨셉은 변경되기가 어려움으로 제가 풀어야 할 숙제이지요
0 추천
보통은 이런 앱을 설치하지 말라고 합니다. 개인적으로 매우 좋지 않을 형태라고 생각하는데요..

그래도 굳이 이런 앱을 만드셔야 한다면, Alarm 매니저를 살펴보세요. Thread는 안드로이드 구성요소의 라이프 사이클에 잘 맞춰서 사용하면 메모리 릭을 만들지 않을 수 있습니다.

그리고 Thread로 만들었다고 해서 영원히 살거라고 생각한다면, 안드로이드 OS를 너무 쉽게 보신 겁니다. 앱이 백그라운드로 변경되면, OS의 정책에 따라서 리소스를 해제할 수 있기 때문에 일정시간 뒤에는 죽는다고 봐야 합니다.
mcsong (44,040 포인트) 님이 2015년 12월 30일 답변
mcsong님이 2015년 12월 30일 수정
0 추천

서비스를 이용해서 만들으세요~

서비스 안에서 해당 데이터 받아오는 로직을 쓰레드로 돌리시구요~

서비스 안죽게 코딩하시면 될듯 합니다.

https://www.google.co.kr/?gws_rd=ssl#newwindow=1&q=android+%EC%A3%BD%EC%A7%80+%EC%95%8A%EB%8A%94+%EC%84%9C%EB%B9%84%EC%8A%A4

근데 폰 꺼지면 365일은 힘들 듯 하네요 ㅋㅋ

hater (6,600 포인트) 님이 2015년 12월 30일 답변
...