2012-03-26 24 views
8

Android'de Hizmet'in birden fazla örneğini alabilir miyiz? Belirli bir zamanda telefonu sessize atabilen bir servis istiyorum ve telefonu belirli bir zamanda titreşim modunda yapmak için bu servisi kullanmak istiyorum. Yani temelde servisin birden çok kez çalışmasını sağlayabiliyorsam, telefonu titreşim modunda ayarlamak için başka bir servis oluşturmaya gerek yok. Ayrıca birden fazla örnek çalıştırabilirsek, lütfen nasıl durduğunu açıklayın. Herhangi bir kod ipucu çok yardımcı olacaktır.Android'de birden çok Hizmet örneğine sahip olma

cevap

25

Android'de bir Hizmetin birden fazla örneğini alabilir miyiz?

Hayır Service birden alt sınıfları vardır, ancak Service verilen herhangi bir alt sınıf belirli bir anda tam, 0 veya 1 örneklerini sahip olacaktır.

Belirli bir saatte telefonu sessize alamayacak bir hizmet istiyorum ve bu servisi belirli bir zamanda titreşim modunda yapmak için kullanmak istiyorum.

Bunlardan herhangi biri için bir hizmet kullanmamalısınız. AlarmManager ve BroadcastReceiver kullanın, lütfen.

+0

Teşekkürler, bir süre sonra hizmeti başlatmak için AlarmManager kullanıyorum. BroadcastReceiver'ı anlama ve AlarmManager'ı kullanarak nasıl kullanmam konusunda yardımcı olabilir misiniz? –

+0

@SumitSahoo: 'PendingIntent'inizi oluşturmak için' getService() 'yi çağırmak yerine,' getBroadcast() 'adını verin. Ve iş mantığınız bir "Hizmet" içinde olmak yerine, bir "BroadcastReceiver" içinde (genellikle "" öğesi aracılığıyla bildirimde kayıtlı). – CommonsWare

2

Hizmetin böyle bir amaçla kullanılabileceğini düşünmüyorum. Hizmet, bazı farklı işlevler için değil, yalnızca bir anlam kazandırmak zorundadır. Kodu basit ve açık tutmak için ek hizmet oluşturmak daha iyidir.

2

Sorunuz oldukça mantıklı değil. Yapmak istediğiniz şey, aynı servisin birden çok örneğini çalıştırarak ve aynı anda farklı şeyler yapmak gibi görünüyor. Ama sorunuz temel olarak hizmetlerin uzun bir zaman diliminde yapmaması gerektiği gerçeğine dayanıyor. Bunun yerine, neyin olması gerektiğine dair bir niyet almaları, belki de bir iplik ya da bir şey ortaya çıkarmaları ve daha sonra etrafta asılı durmalarıdır. Bir Hizmetin ana iş parçacığı üzerinde çalıştığını unutmayın, arka planda değil, bu nedenle orada uzun süre çalışan şeyler yapmamalısınız. Bakmak isteyebileceğiniz şey, ne olması gerektiğini kontrol eden amaçların kullanımıyla Faaliyetlerinizle koordinasyon sağlayan bir IntentService'dir.

İlgili konular