业余自己写一个 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 当中没有任何相关提示
请大神指点