Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 即使在声明为静态后仍具有多个实例的线程_Android_Android Service - Fatal编程技术网

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)。此外,它是一个本地应用程序,没有网络请求