Android - 线程问题(两次达到条件)ProgressBar
Android - Thread issues (condition being reached twice) 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中打印了两次,不知道为什么。我做错了什么?
删除这一行,您将不会在日志文件中看到第二行。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
实际上,当您要求 android 更改屏幕方向时,android 系统会重新创建您的 activity 并因此在另一个线程仍在工作时创建一个新线程。这就导致了你的问题。
如果您希望屏幕方向为横向,请尝试通过 activity 方向属性下的清单文件进行更改。
首先,我的代码:
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中打印了两次,不知道为什么。我做错了什么?
删除这一行,您将不会在日志文件中看到第二行。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
实际上,当您要求 android 更改屏幕方向时,android 系统会重新创建您的 activity 并因此在另一个线程仍在工作时创建一个新线程。这就导致了你的问题。
如果您希望屏幕方向为横向,请尝试通过 activity 方向属性下的清单文件进行更改。