2011-08-21 3 views
2

시작할 때 Google 스프레드 시트에 대한 연결을 초기화 한 다음 주기적으로 데이터베이스에서 스프레드 시트로 데이터를 전송하는 서비스를 만들고 싶습니다.Android 서비스에서 두 개의 스레드 실행

두 개의 스레드를 만들 수 있습니까? Google 스프레드 시트에 연결하는 프로그램과 데이터베이스의 변경 사항을 확인하고 스프레드 시트를 업데이트하는 프로그램입니다.

onCreate에서 첫 번째 스레드 (Google 스프레드 시트에 연결)를 실행하고 onStartCommand에서 두 번째 스레드를 실행하려고했습니다. 이 나쁜 습관인가? 아무도 내가 이것을 할 수있는 방법에 대한 의견이 있습니까?

감사합니다. 내가 말한 것이 불분명한지 알려주세요.

+0

첫 번째 스레드의 목적은 무엇입니까? 그것은 무엇을 할 것인가? – momo

+0

첫 번째 스레드가 Google 스프레드 시트에 연결합니다. 어느 것이 약 30-40 초. 두 번째는 단순히 스프레드 시트에 데이터를 추가합니다. – gtdevel

답변

4

왜 두 개의 스레드를 실행해야합니까? 귀하의 작업은 순차적 인 것으로 보입니다. 먼저 데이터베이스에서 데이터를 가져 와서 스프레드 시트에 게시하십시오. 데이터베이스 데이터를 가져올 때까지 이미 Google 문서 도구에 인증 된 경우 2 ~ 2 초 정도 절약 할 수 있지만 백그라운드 서비스에서 실행해야하는 경우에는 표시되지 않습니다. 그리고 이것은 때때로 실행될 필요가 있으므로, AlarmManager을 사용하여 특정 간격으로 시작하도록 서비스를 예약하고 작업이 완료되면 스스로 종료하도록해야합니다. 이 경우 IntentService을 사용하면 작업을 수행하고 자동으로 종료하는 백그라운드 스레드가 시작됩니다.

+0

서비스에 대한 IntentService의 이점은 무엇입니까? – gtdevel

+0

서비스는 작업자 스레드를 자동으로 시작하지 않으며 작업이 완료되면 자동으로 종료되지 않습니다 ('stopSelf()'호출해야 함). IntentService는 백그라운드 스레드에서 수신하고 실행하는 요청에 대해 큐를 사용하고 완료되면 자체를 종료합니다. 기본적으로 그것은 당신이 세부 사항에 대해 걱정할 필요없이 옳은 일을합니다. –

+0

감사합니다 니콜라이, 정말 고맙습니다. – gtdevel

관련 문제