本人通过在UI线程中调用子线程实现动态显示信息,已经实现,可以不知道如何实现暂停啊。请多多指教。
关键代码如下:
public class HandlerTest extends Activity {
protected static final int GUIUPDATEIDENTIFIER = 0x101;
int i=0;
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case HandlerTest.GUIUPDATEIDENTIFIER:
setContentView(R.layout.main);
TextView tv=(TextView) findViewById(R.id.tv);
tv.setText("G3:"+i);
tv.postInvalidate(); //使用postInvalidate();刷新
break;
}
super.handleMessage(msg);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
new Thread(new myThread()).start();
Button button1 = (Button)findViewById(R.id.stop);
button1.setOnClickListener(startIt);
}
private OnClickListener startIt = new OnClickListener()
{
public void onClick(View v)
{
[color=#FF0000]// 想在这里添加代码,控制子线程暂停 [/color]
} };
class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = HandlerTest.GUIUPDATEIDENTIFIER;
HandlerTest.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
}
关键代码如下:
public class HandlerTest extends Activity {
protected static final int GUIUPDATEIDENTIFIER = 0x101;
int i=0;
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case HandlerTest.GUIUPDATEIDENTIFIER:
setContentView(R.layout.main);
TextView tv=(TextView) findViewById(R.id.tv);
tv.setText("G3:"+i);
tv.postInvalidate(); //使用postInvalidate();刷新
break;
}
super.handleMessage(msg);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
new Thread(new myThread()).start();
Button button1 = (Button)findViewById(R.id.stop);
button1.setOnClickListener(startIt);
}
private OnClickListener startIt = new OnClickListener()
{
public void onClick(View v)
{
[color=#FF0000]// 想在这里添加代码,控制子线程暂停 [/color]
} };
class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = HandlerTest.GUIUPDATEIDENTIFIER;
HandlerTest.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
}
待要唤醒时notify或者notifyAll。
要保持好同步。
或者干脆让线程结束,下次再重新new一个线程。
在JAVA中,一个线程一旦运行完毕,即执行完其run()方法,就不可以重新启动了。此时这个线程对象也便成了无用对象,等待垃圾回收器的回收。下次想再启动这个线程时,必须重新new出一个线程对象再start之
http://eyesye.javaeye.com/blog/234090
是的,我看成结束线程了,java的线程控制比较烂,对sun的破玩意恨之入骨