我正在尝试在一段时间内自行重新启动服务。我的代码看起来像这样(在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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)