gpt4 book ai didi

java - Android线程不在后台运行

转载 作者:行者123 更新时间:2023-12-01 10:36:11 26 4
gpt4 key购买 nike

Android 上的我的线程未准确运行。我从服务启动它,但不知何故它运行不正确。

服务:

ServiceHelper sh = new ServiceHelper();
new Thread(sh).start();

public class ServiceHelper implements Runnable {
public void run() {
while(true) {
Log.d(LOG_TAG, "run");
//1.) sometimes it calls this here: SSLSocket.close();
//2.) also, sometimes it calls a write operation on this SSLSocket.
// but since write can block, I've put this write operation inside an AsyncTask: new WriteAsyncTask().execute(somethingToWrite);
// This returns immediately.
Thread.sleep(1000);
}
}
}

结果 logcat 如下:

01-10 22:39:54.148 I/TEST(10327): run
01-10 22:40:04.150 I/TEST(10327): run

所以有大概 10 秒的时间错过了这个话题。为什么会发生这种情况?当然还有其他线程会阻塞网络操作。但为什么这个特定的线程没有运行?

我还注意到一件很奇怪的事情:

public void run() {
while(true) {
Log.i(LOG_TAG, "tick1");
Thread.sleep(1000);
Log.i(LOG_TAG, "tick2");
}
}

不知怎的,我在日志中得到了这个:

01-11 22:06:54.649 I/BGService(10078): tick1
01-11 22:07:50.664 I/BGService(10078): tick2

在tick1和tick2之间只有一个操作:Thread.sleep(1000)。怎么能阻塞快一分钟呢?它是在一个线程中,是从一个服务启动的,但是造成如此巨大延迟的主要原因是什么?

最佳答案

确保像这样运行 Runnable:

Thread t = new Thread(new ServiceHelper());
t.start();

只有这样它才会作为线程启动。

顺便说一句,您正在做的是运行一个无限循环,这将占用 100% 的 CPU 使用率。 Android 可能会终止或严重限制您的服务,以允许其他服务正常运行。

关于java - Android线程不在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com