2015-04-23 91 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