Android - 线程问题(条件达到两次)ProgressBar

时间:2016-05-29 18:30:51

标签: android android-progressbar

首先,我的代码:

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

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_starter_load);

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

    new Thread(new Runnable() {
        public void run() {
            while (progressStatus < progressBar.getMax()) {
                progressStatus++;
                handler.post(new Runnable() {
                    public void run() {
                        progressBar.setProgress(progressStatus);
                    }
                });
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if (progressStatus == 100) {
                    Log.e("download complte", "testing"); // This is being printed twice.
                }
            }
        }
    }).start();
}

在这里,我在Android中测试ProgressBar。当它达到条件时:

if (progressStatus == 100) {...}

日志在logcat中打印两次,我不知道为什么。我做错了什么?

1 个答案:

答案 0 :(得分:0)

删除此行,您将无法获取日志文件中的第二行。

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

实际上当你要求android更改屏幕方向时,android系统会重新创建你的活动,因此在另一个线程仍在工作时会创建一个新线程。这会导致您的问题。

如果您希望屏幕方向为横向,请尝试通过活动方向属性下的清单文件进行更改。