2010-04-18 23 views
5

Kullanıcı Ana Düğmeye bastığında başlatılan tüm hizmetleri durdurmak mümkün mü?Uygulamadaki Başlatılan Tüm Hizmetler Durdurun Kapat/Kapat

kullandığım:

startService(new Intent(ClassName.this, ClassName2.class)); 
stopService(new Intent(ClassName.this, ClassName2.class)); 

Bu ben bir şekilde bu konuyu araştırdık ve orada olduğunu düşünüyorum benim app sınıfların ait 7+ için 'stopservice()' eklemek zorunda olacağı anlamına gelir 'onTerminate' Ancak bunun nasıl uygulanacağından emin değil.

Herhangi bir yardım veya ipucu takdir edilecektir! Teşekkürler!

cevap

16

kullanıcı Ev Düğmesi çarptığında tüm hizmetlerini başlatan durdurmak mümkün mü?

Doğrudan değil. Yeni başlayanlar için, HOME'a bastığını bilmenin bir yolu yok.

Yalnızca aktiviteler kullanırken hizmetin çalışmasını istiyorsanız, startService()'dan kurtulmayı düşünün. Bunun yerine, hizmet gereksinimi olan etkinliklerin onStart() yöntemlerinde bindService() kullanın ve ilgili onStop() yöntemlerinde unbindService() numaralı telefonu arayın. Gerektiğinde, hizmetin tembel olarak başlatılmasını sağlamak için BIND_AUTO_CREATE'u kullanabilirsiniz ve Android tüm bağlantılar kaldırıldıktan sonra hizmeti otomatik olarak durdurur.

+0

Yanıt için teşekkürler. Her şey anlamlıdır, bir şey olsa da, "BIND_AUTO_CREATE" hakkında daha fazla bilgi var mı? 'Hizmet' kavramını anlıyorum, ancak yine de 7'den fazla Etkinliğim arasında müziği nasıl çalacağımı bilmiyorum, ancak kullanıcı 'Ana Ekran'a çıktığında bunu durdurun. Başka biri aynı sorunu yaşıyorsa, Android hizmetleri hakkında iyi bir makale buldum: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/ –

+0

istenilen modelin uygulanması zor olacaktır. Bu yüzden çoğu müzik çalar sizin yaptığınız şeyi yapmazlar - özellikle de * kullanıcının müzik dinlemede uygulamaya geri dönmesi için hızlı bir erişim için bir Bildirim sunması durumunda HOME'u bastığında müzik çalmasını ister. Aslında, bu kalıbı HOME için özel olarak uygulamanız imkansız olacaktır. Aktivitelerinizden herhangi birinin ön planda olup olmadığının bir işaretini, bayrak çok uzun süre yanlışsa müziği kapatacak bir bekçi tutarak, bu kalıbı muhtemelen "faaliyetlerimin hiçbiri ön planda değil" için uygulayabilirsiniz. – CommonsWare

+0

Evet, bu sadece bir oyun içindir, bu yüzden oyun askıya alındığında/duraklatıldığında müzik çalınmaz. 'HOME' düğmesine basarsam oynamayı durdurmak için onPause() 'ı kullanabileceğimi fark ettim ama tek sorun oyun menüsünde ilerlediğimde durmasıdır. Bu sorunu çözmek için herhangi bir ipucu var mı? –

2

Kullanıcı uygulamanızı terkettiğinde hizmetlerin durmasını istiyorsanız, hizmetleri kullanmak isteyip istemediğinizi sorardım. Uygulamanızı olması gerekenden daha karmaşık hale getiriyor olabilirsiniz.

Ayrıca, bu hat gerçekten sorgulanabilir:

 
startService(new Intent(ClassName.this, ClassName2.class)); 

Sen eylem bir sınıfın sınıf adıdır ve veri URI başka bir sınıfın sınıf adı olan bir Niyet yapıyoruz ...! Belki de "yeni Niyet (bağlam, MyService.class)" gibi bir şey mi kastediyorsunuz?

+0

Girişiniz için teşekkürler, sadece uygulamasında müzik çalmaya çalışıyorum. Ayrıca kapatmak için müzik/ses ayarlarım var. Ayrıca "yeni Niyet" bölümünü de çözeceğim. –

+0

Tamam. Yine de müzik çalmak için bir servise ihtiyacınız yok. – hackbod