第三方登录,导致 UI 更新失败

2019-05-03 12:27:32 +08:00
 lixyz

业余自己写一个 APP,今天在集成 QQ/新浪微博 登录

业务流程是这样的

点击 QQ/微博登录按钮

弹出一个自定义的 Dialog (调用 show 方法)

然后新开线程,进行授权申请

然后进入 Auth 页面,填写 QQ 帐号密码或者微博帐号密码

授权成功,通过 Handler 发送消息

在 handleMessage 当中更新 UI (一个 ListView 控件,用以显示 QQ/微博帐号),然后将 dialog 关闭(调用 Dialog 的 dismiss 方法)

出现的问题是,Handler 能收到消息,但是却无法关闭 Dialog,但 ListView 控件可以更新

有谁知道这是怎么回事儿吗?

这是 Handler 的代码

	public static class MyHandler extends Handler {
        private SoftReference<personalInformationActivity> personalInformationActivity;

        private MyHandler(personalInformationActivity personalInformationActivity) {
            this.personalInformationActivity = new SoftReference<>(personalInformationActivity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            personalInformationActivity activity = personalInformationActivity.get();
            switch (msg.what) {
                case BIND_QQ_SUCCESSFUL:
                    SharedPreferences loginConfig = activity.getSharedPreferences("LoginConfig", MODE_PRIVATE);
                    String qqName = loginConfig.getString("UserBindQQ", null);
                    String qqIcon = loginConfig.getString("UserBindQQIcon", null);
					//更新控件数据
                    activity.childDataList.get(0).get(1).setItemName(qqName);
                    activity.childDataList.get(0).get(1).setImageUrl(qqIcon);
					//通知 Adapter 数据发生变化
                    activity.adapter.notifyDataSetChanged();
					//隐藏 Dialog  
                    activity.waitDialog.dismiss();
                    break;
                case BIND_QQ_FAILED:
                    activity.waitDialog.dismiss();
                    Snackbar.make(activity.toolbar, "绑定 QQ 失败,请重试", Snackbar.LENGTH_SHORT).show();
                    break;
                default:
            }
        }
    }

我怀疑是进入 Auth 页面导致的,但是又不知道该从哪里下手寻找

因为在解绑定的时候,同样也是一样的步骤,但是 waitDialog 却可以正常隐藏

但是在绑定的时候,却不行,就是因为进入了第三方的 Auth 界面

但 log 当中没有任何相关提示

请大神指点

3829 次点击
所在节点    Android
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560674

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX