|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有一些像NSCopying的接口(经@李禹龙提醒应该叫协议)不是特别用到开始不用了解NSObject创建对象的时候用+(id)alloc方法创建后需要init方法初始化在比来利用新浪微博androidsdk开辟微博登录的时分,从日记中发明一个成绩,就是自界说的WeiboDialogListener内里的办法,好比onComplete大概onCancel等,常常会被两次挪用,如许实在会招致一些隐性成绩,好比增添分外的客户端和服务真个开支,由于我们一般会在onComplete()内里完成更多后续逻辑的处置,而产生如许的情形时,会被处置两次,一入手下手我犯懒,就在办法表面到场了一个变量isCompleted来举行判别,算是临时办理了成绩,厥后在好几个中央要开辟相似功效的时分,总感到内心有点儿不爽,因而决意找找究竟啥缘故原由
看了看微博sdk内里的代码,在WeiboDialog.java内里找到了成绩,这个java文件次要完成的是创立OAuth的UI,而且经由过程完成和挪用WebViewClient的办法来会见微博的api和我们app的callbackurl,进而经由过程WebViewClient内里捕捉以后哀求的URL,剖析URL参数落后行响应逻辑的判别,经由过程剖析,成绩应当是在这部分。
在WeiboDialog.java内里有个函数handleRedirectUrl(),这个函数就是用来判别认证和受权过程当中前往参数的,代码以下:
privatevoidhandleRedirectUrl(WebViewview,Stringurl){
Bundlevalues=Utility.parseUrl(url);
Stringerror=values.getString("error");
Stringerror_code=values.getString("error_code");
if(error==null&&error_code==null){
mListener.onComplete(values);
}elseif(error.equals("access_denied")){
//用户或受权服务器回绝授与数据会见权限
mListener.onCancel();
}else{
mListener.onWeiboException(newWeiboException(error,Integer.parseInt(error_code)));
}
}一看就晓得啥意义了,关头的逻辑就在这内里,回调我们本人完成的WeiboDialogListener内里的办法,顺藤摸瓜,挪用该办法的代码就在完成WebViewClient内里,研讨了一下该部分代码,找到了缘故原由
在WebViewClient中,我们必要完成最少shouldOverrideUrlLoading()办法,该办法在每次加载新url的时分挪用,别的,我们还一般会完成onPageStarted()办法,该办法也是在新url入手下手加载的时分举行挪用(注重:在frame内里加载是不会挪用的,具体文档见http://developer.android.com/reference/android/webkit/WebViewClient.html)
在WeiboDialog.java完成WebViewClient对象的时分,在shouldOverrideUrlLoading()和onPageStarted()内里都同时挪用了handleRedirectUrl()来举行回调url和参数的判别,了局就招致了我碰到的成绩,因而我们能够把内里的一个往失落,大概增添一个参数来举行判别,制止反复挪用,今朝统统一般了!
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。 |
|