我想在一个应用里实时刷新获取的数据,所以我拿了一个for循环来做实验,下面是我的代码
private int number=1;
private Thread mthread;
private Handler handler=new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what) {
case MESSAGE_SUCCESS:
cntv.setText("异步刷新成功"+number);
break;
default:
break;
}
}
};
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
number++;
handler.obtainMessage(MESSAGE_SUCCESS).sendToTarget();
}
};protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cntv=(TextView)findViewById(id.ContactName_tv);
mbutton1=(Button)findViewById(id.button1);
mbutton1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < 20; i++) {
mthread=new Thread(runnable);
mthread.start();
}
}
});
}
但是为什么总是等到循环结束后才显示获得的最后一个值呢?
有没有什么办法可以每循环一次就更改一次View显示的值呢?Android界面asynchronous
private int number=1;
private Thread mthread;
private Handler handler=new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what) {
case MESSAGE_SUCCESS:
cntv.setText("异步刷新成功"+number);
break;
default:
break;
}
}
};
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
number++;
handler.obtainMessage(MESSAGE_SUCCESS).sendToTarget();
}
};protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cntv=(TextView)findViewById(id.ContactName_tv);
mbutton1=(Button)findViewById(id.button1);
mbutton1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < 20; i++) {
mthread=new Thread(runnable);
mthread.start();
}
}
});
}
但是为什么总是等到循环结束后才显示获得的最后一个值呢?
有没有什么办法可以每循环一次就更改一次View显示的值呢?Android界面asynchronous
解决方案 »
- android的日志能不能像log4j那样输出到文本?
- android开发入门的疑惑,求点击!!!
- 安卓中contacts模块中联系人问题
- 如何隐藏EditText部分菜单
- android 数据库编程
- Android做一个小软件 屏幕太小 软件太大显示不是太好 怎样让屏幕可以滑动来把我的软件显示完全
- android这样屏蔽home键后和全屏冲突,屏蔽home键,就没有全屏了
- android 摇动事件判断
- 每个页面检查网络的问题
- google play 注册需要用Visa一类的信用卡,可俺只是个大三学生...
- 有大侠知道这种错误吗?eclipse clean时候,recipe for target `clean-box2d_static-armeabi' failed
- Android 如何改变Menu文本颜色?请教高手!!!
如果你的应用里是多个子线程要操作同一个数据并返回结果到textview上,你的这种方法是没有错的。只不过因为cpu处理的很快,20个子线程几乎同时对textview刷新,显示的是最后一个。如果你的应用想要达到某一个子线程对数据进行实时操作,并把结果返回到textview上,请参考楼上的做法。
一个thread dead以后。它占用的资源被释放掉,但是至于是否会被GC回收,这个不太清楚,应该是不会吧,这好像跟线程池有关,这方面不太清楚。网上有一篇文章说是 dead !=回收 。没经过试验不敢乱下结论,lz你可以去试试。