2010-09-26 19 views
7

Web'de araştırma yaptım, bir Android servisinin nasıl yapılacağını anlayamıyorum. Basit bir şekilde nasıl oluşturulacağına dair çok sayıda örnek buldum, ancak örneklerin hiçbiri bir hizmetin bir etkinlikten nasıl çağrılacağını göstermiyor ve hizmetin bir şey yapmasını sağlıyor. Örneğin, istekte bulunduğunda bir sunucuya TCP metin mesajı gönderecek bir hizmet çalıştırmak istiyorum. Hizmeti yapabilirim ve çalıştırabilirim, ancak Etkinlik, TCP iletisini gönderecek hizmetteki yönteme bir dize ileten çağrıyı nasıl yapıyor?Android Service - Bir örnek buluyorum Görünüşe göre

Bu biraz kolay olmalı gibi görünüyor, ancak nasıl yapılacağını anlayamıyorum veya bir örnek bulamıyorum. Belki bir servisin ne için kullanılması gerektiğini anlamıyorum. Ben kesinlikle uzun bir süre için çalışan, hiçbir gui ihtiyaç duyulan ve TCP mesajları göndermek için "hizmet" isteklerini istiyorum .... hum ...

+0

Nasıl bir açıklama noktası (bu benim anlaması biraz zaman aldı) gibi, Android'de "Servis" kavramı, arka planda bir kafa olmadan çalışan Windows servisi gibi değil. Bir arka plan çalışanı iş parçacığına benziyor, onu yaratıyor ve işini yapmasını söyle, sonra bittiğinde bir olayı tetikleyebilir. –

cevap

1

Servis yapabilirim ve koşabilirim. Ancak, etkinliğin, TCP iletisini gönderecek hizmetteki yönteme dizesini geçiren çağrıyı nasıl yapması gerekir? Yerel ciltleme desenini kullanın. this sample project'da, bir etkinlik, bir konum değişikliğine bağlı olarak bu hizmet tarafından alınan bazı verileri (hava durumu tahmini) almak için bir hizmete bağlanır. this sample project numaralı belgede, bir etkinlik, bir kullanıcının identi.ca zaman çizelgesindeki değişikliklerden haberdar edilmek üzere bir dinleyici nesnesini kaydetmek için bir hizmete bağlanır. Veya IntentService tarafından işlenecek bir komut göndermek için bir IntentService ve startService() kullanın veya startService() kullanın. this sample project'da, bir arayan tarafından sağlanan bir BeanShell betiğini yürüten bir IntentService uygularım. this sample project'da, BeanShell betiğini IntentService'a gönderen bir etkinlik gerçekleştiriyorum. Bu çift örnek, bu tekniği uygulamalarda kullanarak göstermek için tasarlanmıştır, ancak yaklaşım aynı zamanda tek bir uygulama içinde iyi çalışır.

Kesinlikle o zaman

No you don't uzun süre çalışan istiyorum.

+1

Eğer öğreniyorsanız, niyet API'sine sadık kalacağım ve ciltleme desenini tek başına bırakacağım, bunu anlamak çok daha zordur ve hizmetinizin referansının boş olup olmadığını sürekli olarak kontrol etmenizi engeller. IntentService, http://developer.android.com/reference/android/app/IntentService.html dosyasını başlatmak için iyi bir yerdir – schwiz

İlgili konular