Android LVL(授权服务)非常慢!——解决方案?异步



我在网上看了看,看到一些其他的帖子抱怨Android授权(LVL)库是如何的慢,但没有解决方案。在HTC Thunderbolt(全新手机)上,测试应用程序的启动时间会延迟3-5秒以上。

谁有异步调用这个库的经验或想法?其他的解决方案吗?我只是使用基本提供的样例代码。真正令人恼火的是,当这个简单的许可证检查发生时,整个应用程序被冻结,这真的很糟糕。

谢谢!

Nitwit发现:licenseCheck是异步的。

所以只要启动它,然后用接下来的几行代码打开应用程序,当响应到达时,这将中断应用程序(例如,如果你设置有一个对话框,如果许可证无效,那么你的应用程序将开始加载,然后对话框出现,这将阻止一切)。

确保在"don't allow"情况下的所有代码的后续代码中包含finish()。

效果很好:应用程序的加载时间减少了4到5秒。

我可能错了,但我感觉LVL服务器在调试模式下使用时非常缓慢和有漏洞,也就是说,当我直接使用Android Studio在我的设备上安装应用并通过改变Google Play Console中的响应来测试LVL执行时。确实,在这种情况下使用的是沙盒服务器,而不是Google Play生产服务器。

所以,有快速和适当的响应LVL执行,我上传了一个测试apk(与toast看到LVL响应)到Google Play控制台的beta测试频道。然后,我通过Google Play beta测试URL从Google Play下载了apk。LVL的反应更快更可靠。

请告诉我你是否确认这个观察。

在你的Activity中实现LicenseCheckerCallback,并像这样调用它:

mLicenseChecker = new LicenseChecker(this, new MyPolicy(this, new AESObfuscator(getSalt(), getPackageName(), getDeviceId())), PUBLIC_KEY);
mLicenseChecker.checkAccess(new MyCheckerCallback());
mHandler = new Handler();

如果许可证无效,则发送给处理程序:In MyCheckerCallback:

public void dontAllow() {
    if (isFinishing()) {
        return; //don't update UI when app is finishing
    }
    mHandler.post(new Runnable() {
    public void run() {
        //show toast message stating license is invalid
        //redirect user to Market
        //call finish()
        }
    });
}

相关内容

最新更新