gpt4 book ai didi

android - 服务中的 postDelayed()

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:11 27 4
gpt4 key购买 nike

我正在尝试在一段时间后自行重启服务。我的代码看起来像这样(在 onStartCommand(...) 内)

Looper.prepare();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(BackgroundService.this, BackgroundService.class);
startService(intent);
}
}, 3 * 60000);

此代码执行时服务在前台运行,但它似乎没有调用 onStartCommand(...) 。有没有其他方法可以在一段时间内自行重启服务?

UPD:我发现它实际上会重新启动服务,但不是在给定的时间内(可能最多需要 30 分钟,而不是给定的 3 分钟)。所以现在的问题是如何让它随之重启

最佳答案

我会在服务级别声明 Handler 变量,而不是在 onStartCommand 中本地声明,例如:

public class NLService extends NotificationListenerService {
Handler handler = new Handler();

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler.postDelayed(new Runnable() {....} , 60000);
}

而且服务有自己的循环,所以你不需要Looper.prepare();

关于android - 服务中的 postDelayed(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29941267/

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