子线程更新UI会发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方法
子线程更新UI
显然假如你的程序需要执行耗时的操作的话,假如像上例一样由主线程来负责执行该操作是错误的。所以我们需要在onClick方法中创建一个新的子线程来负责调用GOOGLE API来获得天气数据。刚接触Android的开发者最轻易想到的方式就是如下:
public void onClick(View v) {
//创建一个子线程执行耗时的从网络上获得天气信息的操作
new Thread() {
@Override
public void run() {
//获得用户输入的城市名称
String city = editText.getText().toString();
//调用Google 天气API查询指定城市的当日天气情况
String weather = getWetherByCity(city);
//把天气信息显示在title上
setTitle(weather);
}