Android Java:当应用程序不在前台时,如何完全删除ScheduledExecutorService实例
我有下面的代码块循环检查上次看到的,我想停止它运行,并在应用程序不再在前台时释放资源 在下面的例子中,runnable并没有停止,它只是继续Android Java:当应用程序不在前台时,如何完全删除ScheduledExecutorService实例,java,android,scheduledexecutorservice,Java,Android,Scheduledexecutorservice,我有下面的代码块循环检查上次看到的,我想停止它运行,并在应用程序不再在前台时释放资源 在下面的例子中,runnable并没有停止,它只是继续 ScheduledFuture<?> dfgh; private void getLastSeen() { AsyncTask.execute(new Runnable() { @Override public void run() { ScheduledExecu
ScheduledFuture<?> dfgh;
private void getLastSeen() {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
ScheduledExecutorService scheduleTaskExecutor = Executors.newSingleThreadScheduledExecutor();
dfgh = scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
if (!Presence.screenLocked(A) && Presence.inForeground(A)) {
MessageHelper.getLastSeen(RECIPIENT, A);
System.out.println("Checking Presence");
} else {
System.out.println("App not in foreground or screen is locked");
dfgh.cancel(true);
//cancel here doesn't seem to cancel.
}
}
}, 0, 2, TimeUnit.SECONDS);
}
});
}
ScheduledFuture-dfgh;
私有void getLastSeen(){
AsyncTask.execute(新的Runnable(){
@凌驾
公开募捐{
ScheduledExecutor服务scheduleTaskExecutor=执行者。newSingleThreadScheduledExecutor();
dfgh=scheduleTaskExecutor.scheduleAtFixedRate(新的可运行(){
公开募捐{
如果(!Presence.screenLocked(A)和&Presence.inForeground(A)){
MessageHelper.getLastSeen(收件人,A);
System.out.println(“检查状态”);
}否则{
System.out.println(“应用程序不在前台或屏幕被锁定”);
dfgh.cancel(真);
//在这里取消似乎不是取消。
}
}
},0,2,时间单位为秒);
}
});
}
由于ScheduledExecutorService
的范围是运行的本地范围,因此您将无法通过其他方法对其进行控制
如果您看到,您将看到它们将实例作为字段。在这个领域你可以打电话