JonsenTang
2021-04-19 13:45
采纳率: 100%
浏览 39

Android更新UI问题

//获取当前天气
    public void NowWeatherFill() {
        mHandler = new Handler.Callback() {
            @Override
            public boolean handleMessage(@NonNull Message msg) {

                String NowUrl = Constant.NOW_WEATHER_URL + "location=" + (String) msg.obj + "&key=" + Constant.API_KEY;

                HttpUtils.sendOkHttpRequest(NowUrl, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        ToastUtils.showShortToast(MainActivity.this,"错误");
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        String responseData = response.body().string();
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Gson gson = new Gson();
                                NowWeatherBean nowWeatherBean = null;
                                if (responseData != null && !responseData.isEmpty()) {
                                    nowWeatherBean = gson.fromJson(responseData, NowWeatherBean.class);
                                    tvTemperature.setText(nowWeatherBean.getNow().getTemp());//温度

                                    String tempStr = "当前温度:" + nowWeatherBean.getNow().getTemp() + "度,天气" + nowWeatherBean.getNow().getText() + "。";

                                    tvWeek.setText(DateUtils.getWeekOfDate(new Date()));//星期
                                    tvInfo.setText(nowWeatherBean.getNow().getText());//天气状况

                                    String time = DateUtils.updateTime(nowWeatherBean.getUpdateTime());//截去前面的字符,保留后面所有的字符,就剩下 22:00

                                    tvOldTime.setText("最近更新时间:" + WeatherUtil.showTimeInfo(time) + time);
                                    tvWindDirection.setText("风向     " + nowWeatherBean.getNow().getWindDir());//风向
                                    tvWindPower.setText("风力     " + nowWeatherBean.getNow().getWindScale() + "级");//风力
                                    wwBig.startRotate();//大风车开始转动
                                    wwSmall.startRotate();//小风车开始转动
                                }else{
                                    ToastUtils.showShortToast(MainActivity.this,"错误");
                                }
                            }
                        });
                    }
                });
                return false;
            }
        };
    }


    //获取空气质量
    public void AirQualityFill(){
        mHandler = new Handler.Callback() {
            @Override
            public boolean handleMessage(@NonNull Message msg) {

                String NowUrl = Constant.AIRQUALITY_URL + "location=" + (String) msg.obj + "&key=" + Constant.API_KEY;

                HttpUtils.sendOkHttpRequest(NowUrl, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        ToastUtils.showShortToast(MainActivity.this,"错误");
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        String responseData = response.body().string();
                        runOnUiThread(new Runnable() {

                            @RequiresApi(api = Build.VERSION_CODES.M)
                            @Override
                            public void run() {
                                Gson gson = new Gson();
                                Air_qualityBean air_qualityBean = null;
                                if (responseData != null && !responseData.isEmpty()) {
                                    air_qualityBean = gson.fromJson(responseData, Air_qualityBean.class);
                                    String airStr = "空气质量:" + air_qualityBean.getNow().getAqi() + ",空气" + air_qualityBean.getNow().getCategory() + "。";

                                    rpbAqi.setMaxProgress(300);//最大进度,用于计算
                                    rpbAqi.setMinText("0");//设置显示最小值
                                    rpbAqi.setMinTextSize(32f);
                                    rpbAqi.setMaxText("300");//设置显示最大值
                                    rpbAqi.setMaxTextSize(32f);
                                    rpbAqi.setProgress(Float.valueOf(air_qualityBean.getNow().getAqi()));//当前进度
                                    rpbAqi.setArcBgColor(getColor(R.color.arc_bg_color));//圆弧的颜色
                                    rpbAqi.setProgressColor(getColor(R.color.arc_progress_color));//进度圆弧的颜色
                                    rpbAqi.setFirstText(air_qualityBean.getNow().getCategory());//空气质量描述 取值范围:优,良,轻度污染,中度污染,重度污染,严重污染
                                    rpbAqi.setFirstTextSize(44f);//第一行文本的字体大小
                                    rpbAqi.setSecondText(air_qualityBean.getNow().getAqi());//空气质量值
                                    rpbAqi.setSecondTextSize(64f);//第二行文本的字体大小
                                    rpbAqi.setMinText("0");
                                    rpbAqi.setMinTextColor(getColor(R.color.arc_progress_color));

                                    tvAirInfo.setText("空气" + air_qualityBean.getNow().getCategory());

                                    tvPm10.setText(air_qualityBean.getNow().getPm10());//PM10
                                    tvPm25.setText(air_qualityBean.getNow().getPm2p5());//PM2.5
                                    tvNo2.setText(air_qualityBean.getNow().getNo2());//二氧化氮
                                    tvSo2.setText(air_qualityBean.getNow().getSo2());//二氧化硫
                                    tvO3.setText(air_qualityBean.getNow().getO3());//臭氧
                                    tvCo.setText(air_qualityBean.getNow().getCo());//一氧化碳
                                }else{
                                    ToastUtils.showShortToast(MainActivity.this,"错误");
                                }
                            }
                        });
                    }
                });
                return false;
            }
        };
    }

最近自学Android,尝试做一个天气预报app,写了这两个方法,通过get请求获取数据,直接在

onCreate(Bundle savedInstanceState)方法里执行

但是这两个方法在执行中只执行了一个(谁在前面就执行谁)运行中也没有报错,感觉是不是线程阻塞了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Xia_燚 2021-04-19 16:06
    已采纳

    emm 你把  mHandler 换一个变量名字, 使两个方法的变量不是同名,应该解决了你的问题。

     

    点赞 打赏 评论
  • 简单吗 2021-04-19 15:54

    打断点 确认一下 有没有走

    点赞 打赏 评论
  • 有问必答小助手 2021-04-19 18:38

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 打赏 评论
  • 有问必答小助手 2021-04-20 14:29

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 打赏 评论

相关推荐 更多相似问题