微信登录,分享,支付,等的白屏闪屏等问题

首先以微信的第三方登录为例:

微信登录官方文档地址:点击进入


一、准备工作

在进行微信登录之前,首先要在微信开放平台注册开发者账号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

微信开放平台接入地址:点击进入

创建移动应用后获得相应的AppID 和 AppSecret

微信登录官方文档地址:点击进入


二、授权流程说明

官方文档如下:

  1. 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

  2. 2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

  3. 3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

时序图如下:



下面进行代码演示。

发起登陆的代码(当点击微信登录按钮后执行这段代码)

  1. {  
  2.     SendAuth.Req req=new SendAuth.Req();  
  3.     req.scope="snsapi_userinfo";  
  4.     req.state="wechat_sdk_demo_test";  
  5.     api.sendReq(req);  
  6. }  

当这段代码执行完毕后,就会发起微信登录授权页面,等待用户授权登录。授权成功后,SDK通过SendAuth的Resp返回数据给调用方(即我们自己的APP),此时要在WXEntryActivity中的public void onResp(BaseResp resp)方法中进行数据处理(微信、朋友圈分享成功后,此方法同样被调用)。这里我遇到了一个问题。登录一个界面,授权一个界面,WXEntryActivity又一个界面,这样看起来很不协调(WXEntryActivity类finish的时候会有闪屏的效果)。为了让用户感觉只是拉起了一个授权界面,需要加上android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"  使WXEntryActivity变成透明,这样在跳转的过程中就感觉不到WXEntryActivity的存在了

即使清单文件该activity

 <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
            android:screenOrientation="portrait" />

WXEntryAcitivity变成透明后,在跳转过程中感觉不到它的存在了,但是在调试过程中WXEntryActivity,会自动finish还有如果里面做耗时操作的话(比如根据code请求access_token等),该activity在部分手机不会被finish,并且code has been used....根据调试最好不要在这个activity做耗时操作。


总结:遇到问题分析要认真分析.拿微信的第三方登录闪屏白屏等问题为例:点击微信登录(第一个界面)-----跳转到授权页面(第二个界面),然后在该界面点击确认登录按钮-----回调到WXEntryActivity界面(这个界面会让用户感受到白屏或则闪屏等问题,最好不要做耗时操作)这个界面耗时后调用finish不管用,貌似它自己会自动finish(第三个界面)-----回到了最初的登录界面(第一个界面)。所以只需要解决WXEntryActivituy这个activity成透明,用户就感觉不到它的存在了,也就不会感觉到闪屏以及白屏等问题了。



参考 http://blog.csdn.net/skyyyf/article/details/53939667

参考  http://blog.csdn.net/ysjyygywfn/article/details/51439492

展开阅读全文

没有更多推荐了,返回首页