越来越多的线程导致我的应用程序滞后



在我的应用程序中,我得到了一些活动和ReceiverThread.class

Thread是从两个不同的活动开始的。每次我切换到另一个Activity并回忆以前的活动Activity时,它都会启动一个新的Thread。所以如果我在我的应用程序上做了一些大约10分钟的测试,或者应用程序只是使用了一段时间,就会有大量的线程打开,并且都做同样的事情。大多数情况下,线程都在TimedWait上。

这给了我错误的数据,导致应用程序严重滞后,有时甚至没有响应。

是否有一个很好的可能性停止线程onPause()onStop() ?因为许多方法都被弃用了。或者如何恢复以前启动的线程,从而防止Activity创建一个新的线程?

我的ReceiverThread.run():

public void run() {
    initiateCAN();
    while (true) {
        try {
            Thread.sleep(60);
            mHandler.post(r);
        } catch (InterruptedException e) {
            break;
        }
    }
}

如果有什么不清楚或遗漏的,请随时问我,我会编辑我的帖子,但不要只是简单地否决。

建议使用内置的中断系统。然后,您可以通过调用Thread.interrupt()来停止线程(如果不想要多个实例,最好使用onPause())。您的run方法需要稍微改变一下:

public void run() {
    initiateCAN();
    try {
        while (!isInterrupted()) {
            Thread.sleep(60);
            mHandler.post(r);
        }
    } catch (InterruptedException e) {
    }
}

虽然这可能有效,但最好使用Service或其他方法来确保一次只有一个实例(可能是片段而不是活动?)。

你可以使用Android服务,该服务启动线程。当您切换活动时,服务正在运行,不需要启动一个新线程。

最新更新