2011-04-05 7 views
59

Burada basit hizmet programını denedim. Servis başlatmak gayet iyi çalışıyor ve Tost üretiyor ancak servis durdurmuyor. bu basit hizmetin kod aşağıdaki gibidir:android hizmetini durdurun

public class MailService extends Service { 
    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    public void onCreate(){ 
     super.onCreate(); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 
    } 
    public void onDestroyed(){ 
     Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show(); 
     super.onDestroy(); 
    } 
} 

bu Servis denir yerden Faaliyet kodu aşağıdaki gibidir:

public class ServiceTest extends Activity{ 
    private Button start,stop; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.service_test); 

     start=(Button)findViewById(R.id.btnStart); 
     stop=(Button)findViewById(R.id.btnStop); 

     start.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       startService(new Intent(ServiceTest.this,MailService.class)); 
      } 
     }); 
     stop.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       stopService(new Intent(ServiceTest.this,MailService.class)); 
      } 
     }); 
    } 
} 

oluşturduğu durdurma düğmesi ile hizmet durdurmaya yardım et onDestroy() yönteminde kızarmış ekmek. Burada durma problemi ile ilgili pek çok mesaj görmekteyim, ama tatmin edici değil, bu yüzden yeni soru gönderme. Tatmin edici bir cevap için umut.

+6

'StopService (serviceIntent)' çalışmıyor mu? –

+0

* "Ayrıca, imha edilmekte olan hizmetin tam zamanlaması Android'e kalmış ve hemen olmayabilir." * Kimden: http://stackoverflow.com/questions/2176375/android-service-wont-stop/2176415 # 2176415 – bigstones

+1

@chris: Ben yukarıda çalıştırılan stopService (serviceIntent) yönteminin işe yaramaz olduğunu düşünüyorum çünkü tod to onDestroy() durdurma düğmesine tıklandığında oluşmaz. –

cevap

39
onDestroyed() 

onDestroy() 

için yanlış isim sadece bu söz konusu ya da çok kodunuzu bir hata mı yaptım mı?

+0

Evet sonra kodumu sıfırdan yaptım ve iyi çalıştı. Herhangi bir evet, benim önceki kodumda bu sorun olabilir ve ben de farketmedim. Herhangi bir şekilde teşekkürler :) Aynı zamanda başkalarına da yardım ediyor. –

+2

@RaviBhatt Bir hizmeti durdurmayı başardınız mı? Evet ise, o zaman nasıl yapacağınızı paylaşabilirsiniz? – suraj

+0

@suraj [dokulardan ne haber?] (Http://developer.android.com/reference/android/app/Service.html#ServiceLifecycle) – kreker

9

Bu kod benim için çalışıyor: denetlemek Bu link
i durdurmak ve aktivite

case R.id.buttonStart: 
    Log.d(TAG, "onClick: starting srvice"); 
    startService(new Intent(this, MyService.class)); 
    break; 
case R.id.buttonStop: 
    Log.d(TAG, "onClick: stopping srvice"); 
    stopService(new Intent(this, MyService.class)); 
    break; 
} 
} 
} 

yılında Ve hizmet sınıfında hizmetini başlattığınızda Bu benim kodudur:

@Override 
public void onCreate() { 
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onCreate"); 

    player = MediaPlayer.create(this, R.raw.braincandy); 
    player.setLooping(false); // Set looping 
} 

@Override 
public void onDestroy() { 
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onDestroy"); 
    player.stop(); 
} 

MUTLU KODLAMA! Sonra

Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class); 
    //startService(myService); 
    stopService(myService); 

denir hizmetinde yöntem onDestroy():

+0

Teşekkürler! temizle ve basit – Herman

4

için biz yöntemi stopService() kullanmalıdır hizmetini durdurmak Burada

@Override 
    public void onDestroy() { 

     Log.i(TAG, "onCreate() , service stopped..."); 
    } 

içeren complete example olduğunu nasıl servisi durdur.