为什么android中的UI视图更新不能放在子线程中操作
解决方案 »
- 求救,想实现android "摇一摇"的功能,按照很多代码,也依照很多模板写了,程序没报错,但是没有实现功能,各位大神看一看,有什么地方没有注意到。
- android apk包加密
- 计数器显示
- 关于单个ListView 滑动的问题
- menu不能设置为不可点??!!
- Eclipse中为什么不能抓图
- 问下adb命令配置环境变量的事情
- 滚动视图的被自动复位的问题
- 华为手机内存泄露的问题——“GC ROOT static android.view.HwNsdImpl.sInstance”
- Andriod 混淆编译后打开app直接崩溃,求助
- 用aqlitedatabase的query发生nullpointer exception
- ndk sample中自带例子hello-gl2
public void run() {
while(progress<100){
progress = progress + 1;
try {
textView.setText(progress+"%");//这边异常
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} 异常代码:
Only the original thread that created a view hierarchy can touch its views
private Thread myRefreshThread = null;
private ClickText ct = null;
protected static final int GUIUPDATEIDENTIFIER = 0x101; // 自定义Handler 继随自Handler,需要实现handleMessage方法,用以接受消息!
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {//处理消息
switch (msg.what) {
case ClicktextApp.GUIUPDATEIDENTIFIER:
ct.invalidate();// 更新视图UI
break;
}
super.handleMessage(msg);
}
}; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ct = new ClickText(this);///////自定义的VIEW
setContentView(ct);
new Thread(new myThread()).start();// 启动线程 } class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) { Message message = new Message();// 生成消息,并赋予ID值
message.what = ClicktextApp.GUIUPDATEIDENTIFIER;
myHandler.sendMessage(message);// 投递消息
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}}
Handler是个不错的解决的方法