gpt4 book ai didi

java - Android 中的线程

转载 作者:行者123 更新时间:2023-11-29 22:25:38 24 4
gpt4 key购买 nike

我有这样一个例子:

package android.uiexample;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class BasicViewsExampleActivity extends Activity
{

private static int progress = 0;
private ProgressBar progressBar;
private int progressStatus = 0;
private Handler handler = new Handler();

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_views);

progressBar = (ProgressBar) findViewById(R.id.progressbar);

//---do some work in background thread---
new Thread(new Runnable()
{
public void run()
{
//---do some work here---
while (progressStatus < 10)
{
progressStatus = doSomeWork();
}



//---hides the progress bar---
handler.post(new Runnable()
{
public void run()
{
progressBar.setVisibility(View.GONE);
}
});

}

//---do some long lasting work here---
private int doSomeWork()
{
try {
//---simulate doing some work---
Thread.sleep(500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
return ++progress;
}

}).start();
}

在此示例中,它使用 Handler 将一个 Runable 发布到 exc progressBar.setVisibility(View.GONE);。我不知道为什么我不能调用 progressBar.setVisibility(View.GONE);直接:

            //---do some work here---
while (progressStatus < 10)
{
progressStatus = doSomeWork();
}



//---hides the progress bar---
progressBar.setVisibility(View.GONE);

谁能告诉我为什么我不能?

最佳答案

Android UI 框架(就像之前的几乎所有 UI 框架一样)只允许您从主线程更新 UI 状态。你可能想看看 AsyncTask其中包括将进度更新路由到主线程所需的管道。

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

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