gpt4 book ai didi

java - Android Studio 中的线程 (onClick)

转载 作者:行者123 更新时间:2023-12-02 04:54:13 25 4
gpt4 key购买 nike

我正在使用简单的代码来实现简单的线程,这显然在java上完美地工作。有一次我想在 Android Studio 上运行非常相似的一个(我想在单击一个按钮后运行它)一切进展顺利:

我的按钮

public void onClickRoll(View v) throws InterruptedException
{

System.out.println("START!");
t.start();
while (t.isAlive()) {
System.out.println("Still waiting...");
t.join(1000);
}
System.out.println("EVERYTHING TERMINATED");
}

我的主题:

private static class Sender
implements Runnable {
public void run() {
try {
for (int i = 0; i < 10; i++) {
Thread.sleep(400);
System.out.println("You've already been waiting:" +(float)i*0.4+"s");
}
} catch (InterruptedException e) {
System.out.println("ERROR!");
}
}

显然线程不应该只发送一些文本到控制台,但即使这样也有很大的问题。

Error displayed when I open app:
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity

错误显示与 t.start() 的行

在应用程序启动时向控制台显示错误,当我第一次运行应用程序时,它的线程工作正常(没有错误),当我再次单击按钮时,它崩溃了(有相同的错误),(我等待 10 秒以确保线程结束)

缺少什么?除了 InteliJ 之外,我们还需要在 Android Studio 上使用踩踏来做其他事情吗?

附加问题:为什么这段代码也不起作用?这不是一个新线程,但显示相同的错误:

   for (int i = 0; i < 10; i++) {
wait(400);
System.out.println("You've already been waiting:" +(float)i*0.4+"s");
}

最佳答案

一些事情:

  • 您的 IDE (Android Studio) 与您的问题完全无关(我已编辑您的问题以删除标签)

  • 在 Android 框架中,所有发送到 stdout 的内容,例如System.out.println 被发送到/dev/null - 你永远不会看到它。

  • Android 框架中的线程有非常具体的要求。虽然如果您非常小心,您可以启动自己的线程,但几乎没有任何情况您应该这样做,除非您正在为 Android 编写多线程框架,即使这样,也可能不会。您可能应该阅读http://developer.android.com/guide/components/processes-and-threads.html

  • 我猜测您是通过将主 UI 线程加入到后台线程来引发问题的。如果您阅读了developer.android.com 指南中的信息,您会发现您不应该在主 UI 线程上执行任何耗时的操作。

关于java - Android Studio 中的线程 (onClick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28931182/

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