2011-04-05 108 views
59

這裏我試了一下簡單的服務程序。啓動服務工作正常,並生成吐司,但停止服務不。這個簡單的服務的代碼如下:在android中停止服務

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(); 
    } 
} 

從那裏該服務被稱爲活動的代碼如下:

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)); 
      } 
     }); 
    } 
} 

幫我看看其生成停止按鈕停止服務在onDestroy()方法中敬酒。我已經在這裏看到很多關於停止服務問題的帖子,但是並不滿意,因此發佈了新的問題。希望得到滿意的答覆。

+6

'stopService(serviceIntent)'不起作用嗎? – 2011-04-05 17:43:21

+0

*「另外,請記住,被銷燬的服務的確切時間取決於Android,並且可能不會立即生效。」*來自:http://stackoverflow.com/questions/2176375/android-service-wont-stop/2176415#2176415 – bigstones 2011-04-05 17:47:07

+1

@chris:我認爲stopService(serviceIntent)方法,因爲我實施上面沒有工作,因爲在onDestroy()吐司沒有發生停止按鈕單擊。 – 2011-04-06 07:09:42

回答

39
onDestroyed() 

onDestroy() 

錯名字你只能在這個問題上還是在你的代碼也犯了一個錯誤?

+0

是的,後來我從頭做了我的代碼,它運行良好。任何耶可能是我以前的代碼中的那個問題,其他人我也沒有注意到。任何方式謝謝:)因爲它也對其他的幫助。 – 2012-01-26 09:03:25

+2

@RaviBhatt那麼你有沒有成功停止服務?如果是的話,那麼你可以分享怎麼做? – suraj 2012-03-31 07:47:12

+0

@suraj [文檔怎麼樣?](http://developer.android.com/reference/android/app/Service.html#ServiceLifecycle) – kreker 2012-04-03 23:25:36

9

此代碼的工作對我來說:檢查這link
這是我的代碼時,我停下來,在活動

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; 
} 
} 
} 

而在服務類啓動服務:

@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(); 
} 

編碼快樂!

+0

謝謝!清晰簡單 – Herman 2016-11-25 19:12:14

4

停止服務我們必須使用方法stopService()

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

然後在服務方法onDestroy()被稱爲:

@Override 
    public void onDestroy() { 

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

這裏是一個complete example包括如何停止服務。