SORU
16 Aralık 2009, ÇARŞAMBA


Android etkinliği için bağlama hizmeti

Ses kullanarak, OTOMATİK olarak akış çalış basit bir medya oynatıcı yazmaya çalışıyorum. GUI-etkinlik ve playback yapan bir servis var. Benim sorum en iyi aktivite ve hizmet (örneğin guı oyuncu durumuna bağlı olarak güncellenmesi) arasında iletişim kurmak için nasıl.

Etkinlik onBind kullanarak hizmet bağlama biliyorum () eğer bu faaliyet öldürülüyor hizmetini durdurur doğru anladıysam, ama. Kullanıcı etkinliği çıkışları bile çalmaya devam etmek istiyorum. Bu sorun ile ilgili herhangi bir standart veya tercih ettiğiniz bir yol var mı?

CEVAP
16 Aralık 2009, ÇARŞAMBA


Eğer Servis size ulaşana kadar koşmaya devam edecek startService(..) ile bir android Hizmetini başlatmak için "açıkça stopService(..)çağırmak. Bir servis sistemi ile çalışan iki nedeni vardır. Eğer arayan Context.startService() sistem alır service (oluşturma ve arama onCreate() yöntem gerekirse) ve sonra da onun çağrı onStartCommand(Intent, int, int) yöntemi ile değişkenler tarafından sağlanan istemci. Hizmeti bu noktada Context.stopService() stopSelf() denir kadar devam edecektir. Not birden çok arama için Context.startService() yok yuva (gerçi onlar neden birden çok karşılık gelen aramalar için onStartCommand()), Bu yüzden ne kadar çok defa başlayan bir hizmet olacak durduğunda Context.stopService() stopSelf() denir; ancak, hizmetler kullanabilir, kendi stopSelf(int) yöntem sağlamak için hizmeti durdurdu çalışmaya kadar niyet edilmiş işlenmiş.

Müşteriler de Context.bindService() servis için kalıcı bir bağlantı elde etmek için kullanabilirsiniz. Bu, aynı şekilde, eğer zaten çalışır durumda değilse service (bunu yaparken onCreate() arama) oluşturur, ama onStartCommand() çağırmaz. Müşteri hizmeti onBind(Intent) yöntemi, istemci çağrıları geri hizmet yapmak için izin verir IBinder nesne alacaksınız. Hizmet bağlantı kurulmuş olduğu sürece (veya istemci Hizmet başvuru muhafaza edip değil IBinder) çalışmaya devam edecektir. Genellikle IBinder iade AİDL yazıldı karmaşık bir arayüz.

Servisi de başladı ve bağlantıları buna bağlı olabilir. Böyle bir durumda, sistem hizmeti de başlatılmış ya da bir veya daha fazla bağlantı olduğu sürece Context.BIND_AUTO_CREATE bayrağı ile koşmaya devam edecek. Bu gibi durumlarda hiçbiri tutun sonra Servis onDestroy() yöntemi denir ve hizmetini etkin bir şekilde sonlandırıldı. Tüm temizleme (iş parçacığı, kaydını alıcıları durdurma) onDestroy()." dan döndükten sonra tam olmalıdır

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • sWooZie

    sWooZie

    9 ŞUBAT 2006