package com.example.testglobal;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView textView;
int a=0;
int b;
NewThread newThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.text1);
a=12;
newThread=new NewThread();
newThread.start();
Log.e("dfs", "after Thread");
textView.append(""+a);
//测试while中全局变量变化
Log.e("fdsa", "before while b--->"+b);
while(true){
b++;
Log.e("fdsa", "b-->"+b);
if (b>5) {
break;
}
}
Log.e("fdsa","after while b--->"+b);
}
class NewThread extends Thread{//测试在另外类中全局变量的变化
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
a+=10;
Log.e("fda", "in the Thread a --->"+a);
}
}
}
打印结果:
问题:
为什么有时手机打印12,有时又打印22:?
从图片上可以看出:打印12时,是先显示“after Thread”也就是说线程在textView.append(""+a);之后才执行的,测试线程还为执行,所以打印12。当然打印22时是在线程执行之后得到结果赋给了全局变量。在程序中我们使用线程时因为它处理比较耗时的操作,Activity也不能等着处理(如果放在主程序中则会显示程序长时间无响应,会被关闭),用的时候要注意。