Android 即使在声明为静态后仍具有多个实例的线程
我有一个Android 即使在声明为静态后仍具有多个实例的线程,android,android-service,Android,Android Service,我有一个ForegroundService,里面有一个线程,它不断运行以检查新事件并通知用户。 从第一个事件开始24小时后,服务中的变量将被重置,并通过此方法将线程声明为新线程 myThread = new Thread() { @Override public void run() { while (threadRunning) { cigaretteCheck(); }
ForegroundService
,里面有一个线程,它不断运行以检查新事件并通知用户。
从第一个事件开始24小时后,服务中的变量将被重置,并通过此方法将线程声明为新线程
myThread = new Thread() {
@Override
public void run() {
while (threadRunning) {
cigaretteCheck();
}
}
};
myThread.start();
我已经这样声明了线程
private static Thread myThread;
threadRunning = false;
myThread.interrupt();
initialize();
因此,当它多次通过该方法时,我很少收到对该方法cigaretteCheck()的调用,这意味着我可能只有很少的实例。
当我重置变量时,我尝试像这样停止线程
private static Thread myThread;
threadRunning = false;
myThread.interrupt();
initialize();
这显然不起作用。。。我做错了什么?“我有一个ForegroundService,里面有一个线程,它不断地运行,以检查新事件并通知用户”——用户会因为占用CPU和耗尽电池而将你遗忘。请考虑更智能的轮询方法。“我很少收到对这个方法cigaretteCheck()的调用,这意味着我可能只有几个实例”——可能没有。您的进程可能已终止并重新启动。忘记提及,该线程中有一个myThread.sleep(5000)。此外,它是一个本地应用程序,没有网络请求