我正在关注“Beginning Android 4 Development”一书,并且正在使用按钮的以下功能控制服务:
public void startService(View view) {
startService(new Intent(getBaseContext(), QOLService.class));
}
public void stopService(View view) {
stopService(new Intent(getBaseContext(), QOLService.class));
}
QOLService.java 包括
public class QOLService extends Service {
int counter = 0;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Keep running service until stopped, so return sticky
Timer timer=new Timer();
TimerTask tt =new TimerTask() {
@Override
public void run() {
Log.d("QOLService", String.valueOf(++counter));
}
};
timer.scheduleAtFixedRate(tt, 0, 1000);
Toast.makeText(this, "Service started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed", Toast.LENGTH_LONG).show();
}
正如预期的那样,在按下开始按钮时,我得到了“服务启动”toast,在 logcat 中,我每秒都会收到一条递增的消息。即使在应用程序关闭时,这种情况也会按预期继续。
当我单击 stopservice 按钮时,我也会收到预期的“服务已损坏”消息,但计时器仍然存在!如果我关闭应用程序,它仍然会继续运行。如果我再次单击 stopservice 按钮,它不会给出服务销毁消息,就好像它第一次被成功销毁一样。
我是否不恰当地调用我的计时器?如果是这样,我似乎完全按照书中的建议去做了!