2016-03-23 14 views
0

Android'de oluşturulan bir Hizmet sonlandırılamıyor, stopService'den sonra çalışmaya devam ediyor. hizmetlerini Başlangıç ​​şöyle:Bir Hizmeti düzgün şekilde sonlandırıyor musunuz, stopService() çalışmıyor?

Intent i = new Intent(this, MyService.class); 
    startService(i); 

İlişkili Manifest girişi:

<service android:name=".services.MyService" ></service> 

çeşitli etkinlikler arasında varlığını edecek MyService özü, bu yüzden bir IntentService kullanmıyordu:

package com.sample.app.services; 

public class MyService extends Service { 

public static final String TAG = MyService.class.getSimpleName(); 
private Handler handler; 

protected void onHandleIntent(Intent intent) { 


    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(getBaseContext(), "MyService Intent... Start", Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    handler = new Handler(); 

      myProcessing(); 

    // This will cause the service to hang around 
    return (START_STICKY); 
} 


@Override 
public IBinder onBind(Intent intent) { 
    return (null); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    } 
} 

Çeşitli aktivitelerde ve hatta super.onDestroy() 'dan önceki onDestroy()' da denendi; Yukarıdaki denedim: aşağıdakileri denedim: MyService yalnızca çalışmaya devam ediyor. Tanım gereği hizmetin bir Singleton olduğuna inanıyorum.

+0

Bence bu olaydaki tüm çalışanların işlerini durdurmalı ve durdurmalısınız! –

+0

Önce Deneme() ilk, hayır şans. –

cevap

2

hizmet sınıfında içinde

1) stopself Çağrı bunu iki şekilde,() vardır serivce durdurmak isterseniz.

2) stopService() öğesini kullanma.

Sizin durumunuzda, Servis sınıfınızın farklı bir pakette olduğunu söylerseniz (aynı pakette iyi olsa bile), servisiniz için bir amaç filtresi kullanmanız daha iyidir, bu da bir servisin durmasını ve çalıştırılmasını kolaylaştırır Aşağıdaki gibi.

<service android:name=".services.MyService" android:enabled="true"> 
     <intent-filter android:label="@string/myService" > 
      <action android:name="custom.MY_SERVICE"/> 
     </intent-filter> 
    </service> 

ve servis sınıfına

public static final String ServiceIntent = "custom.MY_SERVICE" 

bu ekleyin ve ardından başlayın veya aşağıdaki gibi hizmet durdurabilir.

startService(new Intent(MyService.ServiceIntent)); 
stopService(new Intent((MyService.ServiceIntent)); 

Bu yardımcı olur umarım. Teşekkürler

+0

stopSelf() işe yaramadı, ancak niyet filtresinin nasıl çalıştığını göreceğim. Tks. –

+0

Günlüğünüzü gönderir misiniz? – Jois