第一次遇见这个问题:
Can’t create handler inside thread that has not called Looper.prepare()
百度翻译下:
无法创建程序的线程没有调用prepare()活套。
//什么乱七八糟的。。。。
我的报错的程序是这样的:
1、主MainActivity:
主要目的:主程序开启后3s,调用对时方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Select_Http sh=new Select_Http();
sh.getTime_Http();//校对服务器时间
}
}).start();
}
2、Select_Http类:
public void getTime_Http(){
sh=new SyncHttp();
new Thread(new Runnable(){
@Override
public void run() {
System.out.println("获取时间");
String response="";
try {
response=sh.httpGet(Url_GetTime, "");
Message message = new Message();
Bundle bundle = new Bundle();
bundle.putString("msg", response);
message.setData(bundle);
handler_time.sendMessage(message);//错误在这里;因为这样就调用到主程序啦
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
```
3、handler_time
private Handler handler_time = new Handler() {
public void handleMessage(Message msg) {
//处理数据。。。。
};
};
修改下3、handler_time
private Handler handler_time = new Handler(MainActivity.mainActvity.getMainLooper()) {
}
“`
加上这个(MainActivity.mainActvity.getMainLooper())
本文详细介绍了在Android应用开发中遇到的线程操作问题,特别是如何在非主线程中调用主线程方法时引发的错误,并提供了解决方案。通过实例演示了如何正确地在子线程与主线程之间进行数据交互,避免了常见的运行时异常。
439

被折叠的 条评论
为什么被折叠?



