我环顾四周,看到其他一些帖子抱怨Android许可(LVL)库的速度很慢,但没有解决方案。在HTC Thunderbolt(全新手机)上,它将测试应用的启动时间延迟3-5秒。
有没有人有任何异步调用此库的经验或想法?其他方案?我只是使用基本提供的示例代码。真正讨厌的部分是整个应用程序在这个简单的许可证检查发生时被冻结,这真的很糟糕。
谢谢!
答案 0 :(得分:0)
Nitwit发现了这一点:licenseCheck是异步的。
所以只需触发它,然后用你的下几行代码打开应用程序,当响应到来时,这将中断应用程序(即如果你设置了对话,如果许可证无效,然后你的应用程序将开始加载,然后出现对话框,这会阻止所有内容。)
确保在“不允许”情况下的所有代码的后续行动中包含finish()。
效果很好:应用程序在加载时间内会丢失四到五秒。
答案 1 :(得分:0)
我可能错了,但我觉得LVL服务器在调试模式下使用时速度很慢且有问题,也就是说当我直接在Android Studio上安装应用程序并通过更改来测试LVL实现时Google Play控制台中的响应。实际上,在这种情况下,使用的是沙箱服务器,而不是Google Play生产服务器。
因此,为了对LVL实现做出快速和正确的响应,我将测试apk(带有toast以查看LVL响应)上传到beta测试通道中的Google Play控制台。然后,我通过Google Play beta测试网址从Google Play下载apk。 LVL响应更快更可靠。
如果你确认这个观察,请告诉我。
答案 2 :(得分:-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()
}
});
}