2011-01-12 23 views
7

Bir hizmet öldürülür, nasıl otomatik olarak yeniden başlatılır? servis öldürdü varsa bile onDestroy()Öldürülen hizmeti otomatik olarak yeniden başlatmak nasıl?

+1

Hizmetiniz öldürülmüşse, bunun nedeni kullanıcının ya onu öldürmesi ya da OS'nin bellekte düşük olmasıdır. Bu muhtemelen yeniden başlatmamalısınız demektir. Bu kadar uzun süredir çalışan hizmetler bırakmamalısınız. – Falmarri

+1

Cevabınız için teşekkürler, fakat bazı servisler var, onları öldürdüğümde, yakında yeniden başlayacaklar. – SEed

cevap

0

uğramadan bazen

, sistem daha sonra yeniden deneyecek. more.

3

onStartCommand()'u geçersiz kılar ve START_STICKY veya START_REDELIVER_INTENT (gereksinimlerinize göre) değerini dönüş değeri olarak verir. Sistem, hizmeti açıkça durduruncaya kadar hizmetinizi yeniden başlattığınızdan emin olacaktır.

http://developer.android.com/reference/android/app/Service.html#START_STICKY

+0

START_STICKY yapıyorum. Nexus 5'te iyi çalışıyor ve servisi yeniden başlatıyor. Ama xiaomi servisinde, uygulamam öldürüldüğü anda öldürüldü. – Abhi

6

http://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT

Bir IntentService miras, bu yüzden nazik olması gerekiyordu. Ben onStartCommand overrode() ama

public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 
    return START_STICKY; 
} 

, ebeveyn ne gerektiği ve START_STICKY dönmek yapalım zaman Benim için çalıştı.

+0

Ben aynı şeyi yapıyorum. Nexus 5'de gayet iyi çalışıyor. Fakat xiaomi servisinde, uygulamam öldürüldüğü anda öldürüldü. – Abhi

+0

Kötü durumlarda, hizmetinizin canlı olduğundan emin olmak için bir alarm saati başlatmak isteyebilirsiniz. Çok sık kullanıldığından sakının, CPU'nun pil ömrünü doldurma maliyeti. İşten çıkarmak için hızlıca kaydırma yapan bir uygulamanız var mı? – Meymann

İlgili konular