先上代码 说明一下问题
public class HandlerTextActivity extends Activity {
//声明按钮变量
Button startButton,endButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取按钮实例
startButton = (Button)findViewById(R.id.startButton);
endButton = (Button)findViewById(R.id.endButton);
//为按钮添加事件监听器
startButton.setOnClickListener(new startButtonClickListener());
endButton.setOnClickListener(new endButtonClickListener());
}
Thread thread =null;
Handler handler = new Handler();
class startButtonClickListener implements OnClickListener
{ @Override
public void onClick(View v)
{
// handler.post(updateThread);
thread = new Thread(updateThread);
thread.start();
}
}
class endButtonClickListener implements OnClickListener
{ @Override
public void onClick(View v)
{
flag = true;
}
}
boolean flag=false;
Runnable updateThread = new Runnable()
{ @Override
public void run()
{
System.out.println("updateThread");
while(true)
{
System.out.println("updateThread");
try
{
Thread.sleep(1000);
if(flag)
{
break;
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
//handler.postDelayed(updateThread, 1000);
}
};
}
用Handler和不用Handler都是每隔一秒输出updateThread 然后单击结束按钮就停止输出 。通过这个程序我只是觉得用Handler代码会少一点 没觉得有什么多大用处啊?用Thread都可以换他了,请大哥大姐指点一下。
public class HandlerTextActivity extends Activity {
//声明按钮变量
Button startButton,endButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取按钮实例
startButton = (Button)findViewById(R.id.startButton);
endButton = (Button)findViewById(R.id.endButton);
//为按钮添加事件监听器
startButton.setOnClickListener(new startButtonClickListener());
endButton.setOnClickListener(new endButtonClickListener());
}
Thread thread =null;
Handler handler = new Handler();
class startButtonClickListener implements OnClickListener
{ @Override
public void onClick(View v)
{
// handler.post(updateThread);
thread = new Thread(updateThread);
thread.start();
}
}
class endButtonClickListener implements OnClickListener
{ @Override
public void onClick(View v)
{
flag = true;
}
}
boolean flag=false;
Runnable updateThread = new Runnable()
{ @Override
public void run()
{
System.out.println("updateThread");
while(true)
{
System.out.println("updateThread");
try
{
Thread.sleep(1000);
if(flag)
{
break;
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
//handler.postDelayed(updateThread, 1000);
}
};
}
用Handler和不用Handler都是每隔一秒输出updateThread 然后单击结束按钮就停止输出 。通过这个程序我只是觉得用Handler代码会少一点 没觉得有什么多大用处啊?用Thread都可以换他了,请大哥大姐指点一下。
是的哈,handler 是归属于你创建handler的那个线程。如果你在UI线程中创建,那它就属于UI线程,如果你在其他线程中创建,就属于其他线程。
简单的说,就是这两个单词的意思
一个是handler,一个是thread.
他们经常搭档,但明显不是一个玩意儿么