gpt4 book ai didi

android - 在android中实现while循环

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:45 28 4
gpt4 key购买 nike

我无法理解android中while循环的实现。

每当我在 onCreate() 包中实现 while 循环时,(代码如下所示)

public void onCreate(Bundle icicle) {       
super.onCreate(icicle);
setContentView(R.layout.main);
TextView=(TextView)findViewById(R.id.TextView);
while (testByte == 0)
updateAuto();
}

什么都不启动,一段时间后程序进入“挂起”状态,我不明白为什么。测试字节如下:

byte testByte == 0;

updateAuto() 应该每 1 秒更新一次代码并显示在 textView 部分内。我一直在 updateAuto() 中使用 setText,如下所示,一切正常,但是一旦我实现了 while 循环,我看到的只是黑屏,然后由于“无响应”而在几秒钟后强制关闭的选项.

TextView.setText(updateWords);

我已将其更改为按钮格式(这意味着我现在必须单击按钮才能更新自身),但我希望它能够自行更新而不是手动单击它。

我是否以错误的方式实现了 while 循环?

我也试过在一个单独的函数中调用 while 循环,但它仍然给我黑屏。

我一直在阅读有关 Handler 服务的内容……它有什么作用? Handler 服务能否以更安全或节省内存的方式更新我的 TextView

非常感谢,如果有人能给我一些关于我应该做什么的指示。

最佳答案

振作起来。并尝试密切关注,这对于开发人员来说将是无价的。

While 循环实际上应该只在单独的线程中实现。单独的线程就像在您的应用程序中运行的第二个进程。它强制关闭的原因是因为你在 UI 线程中运行循环,使得 UI 除了通过该循环之外无法做任何事情。您必须将该循环放入第二个线程中,以便 UI 线程可以自由运行。使用线程时,除非处于 UI 线程中,否则无法更新 GUI。在这种情况下,这是如何完成的。

首先,您创建一个 Runnable,它将包含在其 run 方法中循环的代码。在该 Runnable 中,您必须创建第二个 Runnable 以发布到 UI 线程。例如:

 TextView myTextView = (TextView) findViewById(R.id.myTextView); //grab your tv
Runnable myRunnable = new Runnable() {
@Override
public void run() {
while (testByte == 0) {
Thread.sleep(1000); // Waits for 1 second (1000 milliseconds)
String updateWords = updateAuto(); // make updateAuto() return a string
myTextView.post(new Runnable() {
@Override
public void run() {
myTextView.setText(updateWords);
});
}
}
};

接下来只需使用 Runnable 创建您的线程并启动它。

 Thread myThread = new Thread(myRunnable);
myThread.start();

您现在应该会看到您的应用程序在没有强制关闭的情况下循环。

关于android - 在android中实现while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7478941/

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