4

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

有没有人对异步调用这个库有任何经验或想法?其他解决方案?我只是使用基本上提供的示例代码。真正令人讨厌的部分是整个应用程序在这个简单的许可证检查发生时被冻结,这真的很糟糕。

谢谢!

4

3 回答 3

0

Nitwit 想通了: licenseCheck 是异步的。

因此,只需触发它,然后使用接下来的几行代码打开应用程序,当响应到达时,这将中断应用程序(即,如果您设置在许可证无效时出现对话框,那么您的应用程序将开始加载,然后出现对话框,这会阻止一切)。

确保在“不允许”情况下的所有代码的后续操作中包含 finish()。

很好的结果:应用程序在加载时间上损失了四五秒。

于 2012-07-25T14:27:28.630 回答
0

我可能错了,但我感觉 LVL 服务器在调试模式下使用时非常缓慢且有问题,也就是说,当我直接使用 Android Studio 在我的设备上安装应用程序并通过更改响应来测试 LVL 实现时谷歌播放控制台。实际上,在这种情况下使用的是沙盒服务器,而不是 Google Play 生产服务器。

因此,为了对 LVL 实施做出快速和适当的响应,我在 beta 测试通道中将测试 apk(带有 toasts 以查看 LVL 响应)上传到 Google Play 控制台。然后,由于 Google Play beta 测试 URL,我从 Google Play 下载了 apk。LVL 响应更快更可靠。

请告诉我你是否证实了这一观察。

于 2018-03-23T13:35:37.863 回答
-1

在您的活动中实现LicenseCheckerCallback并像这样调用它:

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

如果许可证无效,则发布给处理程序:在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()
        }
    });
}
于 2011-08-21T16:50:26.837 回答