2015-04-23 138 views
0

我想在我參加活動時停止服務。這是我的活動代碼:android-如何在android中停止服務

stopService(new Intent(this, Services_chat.class)); 

在調用mainactivity和oncreate方法。所以我當然會打電話。

這是我的服務代碼:

public class Services_chat extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     new Timer().scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       Log.v("this","caa"); 

      } 
     }, 0, 1000);//put here time 1000 milliseconds=1 second 
     return START_NOT_STICKY; 
    } 

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

正如你可以看到我登錄並運行我的應用程序後,運行這段代碼每一秒,所以它要求停止服務,它不會停止仍在,它運行。

如何停止此服務?

感謝

回答

0

寫這個方法在Services_chat類。

@Override 
public boolean stopService(Intent name) { 
    // TODO Auto-generated method stub 
    timer.cancel(); 
    task.cancel(); 
    return super.stopService(name); 
} 
0

如果綁定通過onBind()MainActivity服務然後調用unBindService()方法停止服務

如果通過startService()MainActivity啓動服務然後調用stopService()stopSelf()

Android系統將嘗試儘快通過stop申請

UPDATE:

onDestroy()添加代碼停止計時,如:中Timer

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    mTimer.cancel(); 
} 

製作對象,而不是使用Annonymous類Timer

onStartCommand()

Timer mTimer = new Timer(); 
mTimer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       Log.v("this","caa"); 

      } 
     },0,1000); 
+0

我沒有使用onBind,我使用startService(),你可以在我的代碼中看到,我的代碼中也有stopService(),我嘗試過stopSelf(),但沒有工作 –

+0

使用'stopService' - 你的服務已經停止..只是計時器運行,所以你是登錄logcat ..但服務停止.. – Kushal

+0

檢查我更新的答案..並在您的代碼中實現相同 – Kushal