Tek bir düğmeye tıklamakla, startService(new Intent(currentActivity.this,MyService.class))
yöntemini kullanarak hizmeti başlatmak istiyorum ancak hizmet çalışıyorsa Çalışmakta olan çalıştırma hizmetinden kaçınmak için bu yöntemi çağırmak istemiyorum. Bu nasıl mümkündür. Aynı projede hem Niyet hizmeti ve Service kullanıyorum ve her ikisi için de aynı koşulu uygulamak istiyorum.Zaten çalışıyorsa hizmetin yeniden çalıştırılmasını nasıl engeller
cevap
Bir hizmet yalnızca bir kez çalışır, böylece startService(Intent)
'u birden çok kez arayabilirsiniz.
Serviste bir onStartCommand()
alırsınız. Öyleyse aklında tut.
Kaynak: Context.startService()
için birden çağrılar böylece olursa olsun bir hizmet Context.stopService()
kez durdurulacak ya stopSelf()
denir başlatıldığında kaç kez, (onlar onStartCommand()
için birden fazla karşılık gelen çağrılara neden gerçi) yuva yapma Not; Ancak, hizmetlerin, başlatılan niyetler işlenene kadar hizmetin durdurulmadığından emin olmak için stopSelf(int)
yöntemini kullanabilirler. konu üzerine http://developer.android.com/reference/android/app/Service.html: At
Servis Ömrü hizmetinizde Bind
Hızlı cevabınız için teşekkürler. Yorumunuz bana çok yardımcı olacaktır, ancak bu yöntemleri tekrar aramak istemiyorsanız hizmet çalışıyor. başka bir fikir ??? –
@AtulBhardwaj: "startService()' * her zaman tetikle "onStartComand()' işlevini çağırır. Dönemi. Yani, ya startService() 'yi çağırmayın ya da birden çok kez çağrılmayı başarabilen daha akıllı bir" onStartCommand() "seçeneğine sahip olun. – CommonsWare
@CommonsWare Noktanız var :) –
; görüşmesi başlatırken:
public static boolean isServiceRunning(String serviceClassName){
final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);
for (RunningServiceInfo runningServiceInfo : services) {
if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
return true;
}
}
return false;
}
Bu kod, yalnızca etkinliğe hizmet bağladığımda işe yarar mı? Uygulamanın çalışmasına kadar bir etkinliğe hizmetin bağlanacağını düşünüyorum.Lütfen yorum –
Bu her zaman işe yaramaz. "Hizmet durduruluyor" dikkate alınmaz. Ve esas olarak Çalışan Hizmetler UI'sini göstermek içindir. Bunu kullandım ve KitKat'ta her zaman işe yaramaz. Aksine, startService DAİMA kullanabilirsiniz ve görevlerinizi yapmak için onCreate ve onStartCommand hizmetini kullanabilirsiniz. Doğru yol bu. –
** Bağlantılı Servis ** neden gerekli? Bir ** Başlangıç Hizmeti ** kullanamaz mıyız? –
Kullanım startService()
: Hizmet çalışıyorsa
Intent bindIntent = new Intent(this,ServiceTask.class);
startService(bindIntent);
bindService(bindIntent,mConnection,0);
Sonra kontrol etmek gibi bir yöntem kullanırlar. Başlatma Hizmeti,
onStartCommand()
numaralı telefonu arayacaktır. Hizmet başlatılmadıysa,
onCreate()
numaralı telefonu arayacaktır. Değişkenlerinizi sıfırlayın ve/veya
onCreate()
'da bir Konu başlatın.
Bu doğru cevaptır. onCreate() göz ardı edilir. – likejiujitsu
Herhangi bir etkinlikten herhangi bir hizmet başlattığımızda, Android sistemi, hizmetin onStartCommand() yöntemini çağırır Ve hizmet zaten çalışmıyorsa, sistem önce onCreate() öğesini çağırır ve sonra onStartCommand() öğesini çağırır.
Yani demek istediğim, android hizmetinin başlangıcında yalnızca bir kez başlatılması ve başka bir istemci yeniden başlatmak istediği zamana kadar devam etmesini sağlamaktır. Bu nedenle, yalnızca onStartCommand() yöntemi her zaman çağrılır.
- 1. Bu hizmetin çok fazla örneği zaten çalışıyor
- 2. Koşul karşılanmadıysa ancak kod zaten çalışıyorsa
- 3. SQL Server Job zaten çalışıyorsa, zamanlanmış bir çalışmayı atlayacak mı?
- 4. OpenMP çalışıyorsa nasıl söylenir?
- 5. , yönlendirme değiştiğinde etkinliğin yeniden başlatılmasını engeller
- 6. Zamanlanmış bir yürütmenin fazladan çalıştırılmasını zorlayabilir miyim?
- 7. Etkinlik etkinleştirildikten sonra hizmetin yeniden başlatılması nasıl engellenir Görev değiştiriciden?
- 8. Android: Hizmetin çökme sonrasında yeniden başlatılması nasıl önlenir?
- 9. Önbellek çalışıyorsa nasıl söylenir. Raylar 4
- 10. VB.NET'te çalışan İşlem İsimleri listesini nasıl alabilirim? Bunu başlamak istiyorum çünkü ama zaten çalışıyorsa başlatmak istemiyorum -
- 11. Köşeli tarama hala çalışıyorsa
- 12. Beyaz zaten çalışan bir uygulamada nasıl çalışır?
- 13. Topshelf konsol modunda çalışıyorsa nasıl algılanır
- 14. Eclipse hata ayıklama modunda çalışıyorsa öğrenin Nasıl
- 15. UITextView, girerken yukarı doğru kaymayı nasıl engeller
- 16. Bir hizmetin hata ayıklanması
- 17. alt işlemi engeller. Python
- 18. Hizmetin web.config özel bir EndPointBehavior nasıl eklenir?
- 19. rsync'e yalnızca hedef dizini varsa çalıştırılmasını söylerim?
- 20. uygulama sayfası yinelenen girişleri engeller
- 21. Bir programın çalıştırılmasını bir sinyal ile sonlandırıp sonlandırılmadığını nasıl anlarsınız?
- 22. Intellij, mesajların açılmasını engeller
- 23. Google Analytics, Android Uygulamasını engeller
- 24. zaten seçenek
- 25. sbt, bütünleştirme testlerini çalıştırmayı nasıl engeller?
- 26. Google Maps: InfoWindow'un haritayı değiştirmesini nasıl engeller
- 27. RVM'nin JRuby ile etkileşimini nasıl engeller
- 28. Kaydırarak oturum açmayı ve merkezlemeyi nasıl engeller
- 29. Dosya Zaten Varsa Nasıl Yazılır?
- 30. Nasıl jQuery .ready zaten
http://stackoverflow.com/questions/8019899/starting-a-service-multiple-times –