gpt4 book ai didi

android - onDestroy 被调用但服务没有结束

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:36 31 4
gpt4 key购买 nike

我正在阅读“开始 Android 4 开发”这本书,并且我正在使用按钮中的以下功能控制服务:

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 中我得到了一条每秒递增的消息。即使应用程序关闭,这种情况也会按预期继续。

当我点击停止服务按钮时,我也收到了预期的“服务已销毁”消息,但计时器仍在运行!如果我关闭应用程序,它仍然会继续运行。如果我再次单击停止服务按钮,它不会给出服务已销毁的消息,就好像它是第一次成功销毁一样。

我是否不恰本地调用了我的计时器?如果是这样,我似乎完全按照书中的建议去做了!

最佳答案

Am I calling my timer inappropriately?

你永远不会停止计时器。因此,它将继续运行直到进程终止。您应该在 onDestroy() 中停止计时器。

关于android - onDestroy 被调用但服务没有结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117946/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com