Java 为什么我不能停止Android中的服务?
为什么这样不行?它一直在跑。我是不是错过了什么 顺便说一下,这是我的服务:Java 为什么我不能停止Android中的服务?,java,android,service,debugging,Java,Android,Service,Debugging,为什么这样不行?它一直在跑。我是不是错过了什么 顺便说一下,这是我的服务: Intent helloservice = new Intent(this, HelloService.class); startService(helloservice); ... stopService(helloservice); 它确实停止了你的服务。在服务中重写onDestroy,您将看到它被调用。但是服务!=计时器,您必须手动停止计时器。要在您的服务停止时使计时器消失,您需要在相应的服务回调方法中调用计时器
Intent helloservice = new Intent(this, HelloService.class);
startService(helloservice);
...
stopService(helloservice);
它确实停止了你的服务。在服务中重写onDestroy,您将看到它被调用。但是服务!=计时器,您必须手动停止计时器。要在您的服务停止时使计时器消失,您需要在相应的服务回调方法中调用计时器上的cancel;从外观上看,这是一件很有趣的事 即使我停止我的服务…我的计时器运行?为什么?
因为,就Android操作系统而言,计时器实例在逻辑上并不与任何特定服务绑定。服务实现负责释放垃圾收集器不会处理的任何资源。打开文件句柄和数据库连接是我想象的其他例子。那么,我的计时器与我的服务完全不同?即使我停止我的服务…我的计时器运行?为什么?我不知道为什么,但是如果你从你的服务中启动10个线程并停止它,它们会继续运行。为什么?因为就安卓而言,你的计时器与你的服务无关。我只是想说明斯蒂芬所说的,它们之间没有任何联系。对你来说,这似乎是因为你从服务启动计时器,但事实并非如此。
public class HelloService extends Service {
private Timer timer = new Timer();
private long INTERVAL = 1000;
public void onCreate() {
super.onCreate();
startservice();
}
private void startservice() {
timer.scheduleAtFixedRate( new TimerTask() {
public void run() {
Log.d("service", "This proves that my service works.");
}
}, 0, INTERVAL);
; }
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}