gpt4 book ai didi

java - InputStream "lags/stuns"应用一段时间

转载 作者:行者123 更新时间:2023-12-01 06:08:24 26 4
gpt4 key购买 nike

我的 Activity 中有 ProgressBar,它一直在旋转。我正在尝试连接到可用的网页 -我使用输入流

InputStream input = new URL(url).openStream();

获取我想要的 URL。运行良好。除了一种情况:当它开始加载时,我在加载/处理时关闭互联网连接(及时关闭它并不容易,但也不难),进度条停止旋转,因为应用程序就像‘卡住’。所以你甚至不能用后退按钮退出它。几秒钟后,例如 3-4,ProgressBar 再次旋转,应用程序解冻并完全运行。LogCat 仅打印应用程序跳过了许多帧。

代码:

new Thread(new Runnable()
{
public void run()
{
try
{
InputStream input = new URL(url).openStream();
...

} catch (IOException e)
{
e.printStackTrace();
}
}
}).start();

编辑:我正在使用 Jsoup 来读取收到的网页。所以我尝试了

Jsoup.connect(url).get();

也是,但问题与上面相同...

日志猫:

Skipped 614 frames!

日志2

10-14 17:25:16.365 26460-26460 D/libEGL: loaded /system/lib/egl/libEGL_mali.so
10-14 17:25:16.375 26460-26460 D/libEGL: loaded /system/lib/egl/libGLESv1_CM_mali.so
10-14 17:25:16.375 26460-26460 D/libEGL: loaded /system/lib/egl/libGLESv2_mali.so
10-14 17:25:16.395 26460-26460 D/OpenGLRenderer: Enabling debug mode 0
10-14 17:25:27.406 26460-26460 I/Choreographer: Skipped 603 frames! The application may be doing too much work on its main thread.

最佳答案

在我看来,在 Java 中生成线程是一种不好的做法。尤其是在安卓系统中。有线程池可以更好地处理这个问题。

在您的情况下使用 AsyncTask:

AsyncTask.execute(new Runnable() {
@Override
public void run() {
try
{
InputStream input = new URL(url).openStream();
...

} catch (IOException e)
{
e.printStackTrace();
}
}
});

关于java - InputStream "lags/stuns"应用一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39964723/

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