我需要写个while true 循环,在循环内计算,采集信息,然后显示在屏幕上。发现while在运行时,界面死机,根本不可控制,也不会显示到界面。这可怎么办?比如:
public flag=true
while (flag)
{
string mtext="now is"+getime();
tvTime.setText(mtext); //显示到界面}我想通过界面上的按钮来控制flag得值,从而控制while循环的停止、启动。但界面死了,while一直运行,退不出来。界面和while循环怎么交互啊。
解决方案 »
- 如何让安卓应用读取本机的离线地图包
- android怎么往xml文件里添加节点,速度啊。。。非常急需!!!!!!
- NDK环境,如何从多个静态库生成一个动态库?
- android游戏开发 关于图片路线碰撞检测问题
- ffmpeg移植问题
- 如何引用一个静态数组里边的值
- apk反编译回来的代码跟正向开发的代码语法有出入,看不懂.
- android应用安装不上
- VS 2013装好xamarin后为什么Xamarin.Android工具栏没有显示可用设备
- 写一个累死滴滴打车的软件有多难?
- ListView中的ProgressBar不能获得焦点
- 点击listview获得id的同时将listview中的内容显示到另一个activity中的Edittext
然后在这个线程中通过Handler机制,来通知UI线程更新界面
你学会Handler应该就可以处理这个问题了
while (flag)
{
System.out.println("看看打了多少条记录")
string mtext="now is"+getime();
tvTime.setText(mtext); //显示到界面}
可以加个延时,1S一次。
刚开始,还没学会Handler是怎么回事,5555
http://blog.csdn.net/coding_or_coded/article/details/7333133
看了, mHandler.sendMessage(message); 不知可不可以发送一个数组呢? 我要显示的是一个大数组。
import java.util.Date;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {
private Button btnChange;
private TextView txtInfo;
private Boolean flag = true;
private Handler handler = new Handler() { @Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x11://A处
txtInfo.setText(msg.getData().getString("key"));
break;
default:
break;
}
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnChange = (Button) findViewById(R.id.change);
btnChange.setOnClickListener(this);
txtInfo = (TextView) findViewById(R.id.info);
new Thread() { @Override
public void run() {
while (flag) {
Message msg = new Message();
msg.what = 0x11;//消息ID,与A处一致,A处才能接受到这个消息
Bundle data = new Bundle();
data.putString("key", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date()));
msg.setData(data);//传递数据
handler.sendMessage(msg);
}
}
}.start();
} @Override
public void onClick(View v) {
if (v == btnChange) {
flag = false;
}
}
}