我在Android上的线程没有正确运行。 我开始从一个服务,但为什么它没有正确运行。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)。它几乎可以阻塞一分钟? 这是在一个线程,它是从一个服务启动,但是这个巨大的延迟的主要原因是什么?
有没有在你的代码有什么用线程。 – CommonsWare
好的,我只是想告诉你一个非常基本的减少我的应用程序。但是,每秒钟将消息打印到logcat中的线程看起来都是一样的。 – Daniel
因此,为了更多浏览,似乎SSLSocket.close()可以阻止整个步骤。 – Daniel