遇到的小问题以及升级版完成

本来前几天就想写这个的,因为刚好碰到一个比较有趣的bug(其实还是自己基础不扎实...),就上篇写的那个低配版的,第二天我突然发现微博回调其实是成功的,之前一直没有成功是因为Toast这个show的时候我就已经把WBShareActivity给finish掉了,然后我就一直认为没有调用成功,⊙﹏⊙b汗。

昨天写需求的时候碰到了一个问题,我用了两个list<object>来存储数据库里面返回的数据,我就暂且称之为A和B吧,在我点击事件的时候是需要重新刷新B中的数据的,刚开始运行OOM,然后我拍了一下自己的头,没有对B进行处理,然后我加了B.clear()之后问题就来了,因为我重新刷新B是要根据A中的数据来进行了,然而A中的某一部分的引用是和B一样的(哎。。),B.clear()的时候清除掉了引用节点,然后一直在A中拿的时候显示一直为[ ],后面自己仔细分析了一下加上查了一下null和clear的区别,用我自己的话就是,null是剪掉了这个对象引用栈中数据的线,clear是清除了引用栈中的数据,哎,还是得多加强基础建设啊。。

下面是微博分享的回调:

public class WBShareActivity extends Activity implements IWeiboHandler.Response {

    /** 微博实例 */
    private AuthInfo mAuthInfo;

    /** 注意:SsoHandler 仅当 SDK 支持 SSO 时有效 */
    private static SsoHandler mSsoHandler;

    /** 封装了 "access_token""expires_in""refresh_token",并提供了他们的管理功能  */
    public static Oauth2AccessToken mAccessToken;

    /** 是否安装微博*/
    private boolean isInstalledWeibo;

    /** 支持Api级别*/
    private int supportApiLevel;

    /** 微博分享的接口实例 */
    private IWeiboShareAPI mWeiboShareAPI;

    private WeiboMultiMessage weiboMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }
    public void init() {
        // 创建微博实例
        mAuthInfo = new AuthInfo(this, Constant.WB_APPID,
                Constant.WB_REDIRECT_URL, Constant.WB_SCOPE);
        mSsoHandler = new SsoHandler(this, mAuthInfo);
        // SSO 授权
        mSsoHandler.authorize(new AuthListener());

        // 创建微博 SDK 接口实例
        mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this,
                Constant.WB_APPID);
//
//        // 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。
//        // 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示
//        // NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册
        mWeiboShareAPI.registerApp();
//
//        //  Activity 被重新初始化时(该 Activity 处于后台时,可能会由于内存不足被杀掉了),
//        // 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。
//        // 执行成功,返回 true,并调用 {@link IWeiboHandler.Response#onResponse}//        // 失败返回 false,不调用上述回调
        mWeiboShareAPI.handleWeiboResponse(getIntent(), this);

        // 获取微博客户端是否安装
        isInstalledWeibo = mWeiboShareAPI.isWeiboAppInstalled();
        // 支持 SDK 的版本
        supportApiLevel = mWeiboShareAPI.getWeiboAppSupportAPI();
    }

    /**
     * 微博认证授权回调类。 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用
     * {@link SsoHandler#authorizeCallBack} 后, 该回调才会被执行。 2. SSO
     * 授权时,当授权结束后,该回调就会被执行。 当授权成功后,请保存该 access_tokenexpires_inuid 等信息到
     * SharedPreferences 中。
     */
    class AuthListener implements WeiboAuthListener {
        @Override
        public void onComplete(Bundle values) {
            //  Bundle 中解析 Token
            mAccessToken = Oauth2AccessToken.parseAccessToken(values);
            // 判断AccessToken是否有效
            if (!mAccessToken.isSessionValid()) {
                SwitchLogger.e("WBShare","认证失败");
                return;
            }else{

            }
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onWeiboException(WeiboException e) {
//            Toast.makeText(WBShareActivity.this,
//                    "分享失败" + e.getMessage(), Toast.LENGTH_LONG)
//                    .show();
        }

    }

    /**
     * @see {@link Activity#onNewIntent}
     */
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // 从当前应用唤起微博并进行分享后,返回到当前应用时,需要在此处调用该函数
        // 来接收微博客户端返回的数据;执行成功,返回 true,并调用
        // {@link IWeiboHandler.Response#onResponse};失败返回 false,不调用上述回调
        mWeiboShareAPI.handleWeiboResponse(intent, this);
    }

    /**
     * 接收微客户端博请求的数据。
     * 当微博客户端唤起当前应用并进行分享时,该方法被调用。
     *
     * @param
     * @see {@link IWeiboShareAPI#handleWeiboRequest}
     */
    @Override
    public void onResponse(BaseResponse baseResp) {
        switch (baseResp.errCode) {
            case WBConstants.ErrorCode.ERR_OK:
                Tip.show(this,"分享成功");
                break;
            case WBConstants.ErrorCode.ERR_CANCEL:
                Tip.show(this,"分享取消");
                break;
            case WBConstants.ErrorCode.ERR_FAIL:
                Tip.show(this,"分享失败");
                break;
        }
        finish();
    }
    /**
     * SSO 授权 Activity 退出时,该函数被调用。
     *
     * @see {@link Activity#onActivityResult}
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // SSO 授权回调
        // 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResult
        if (mSsoHandler != null) {
            mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
        }
    }
}


以上。

继续搬砖,刚需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值