Android LVL (служба лицензирования) невероятно медленная! - решения? Асинхронный? - PullRequest
3 голосов
/ 21 августа 2011

Я осмотрелся в Интернете и увидел другие посты с жалобами на медленную библиотеку лицензирования Android (LVL), но без решений. На HTC Thunderbolt (новый телефон) время запуска тестового приложения задерживается на 3-5 + секунд.

Есть ли у кого-нибудь опыт или идеи по поводу асинхронного вызова этой библиотеки? Другие решения? Я просто использую пример кода, предоставленного в основном. Действительно раздражает то, что все приложение заморожено, пока происходит простая проверка лицензии, это очень плохо.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 25 июля 2012

Nitwit разобрался: LicenseCheck асинхронный.

Так что просто запустите его, затем откройте приложение со следующими несколькими строками кода, и, когда придет ответ, это прервет приложение (т. Е. Если вы настроите диалог, если лицензия недействительна, тогда ваше приложение начнет загружаться, а затем появится диалоговое окно, и это блокирует все).

Обязательно включите finish () в продолжение всего кода, который следует за ситуацией «не разрешать».

Отличные результаты: приложение теряет четыре или пять секунд во время загрузки.

0 голосов
/ 23 марта 2018

Возможно, я ошибаюсь, но у меня такое ощущение, что сервер LVL работает очень медленно и глючит при использовании в режиме отладки, то есть когда я устанавливаю приложение на свое устройство напрямую с помощью Android Studio и тестирую реализацию LVL, меняя ответ в консоли Google Play. Действительно, в этом случае используются серверы песочницы, а не производственные серверы Google Play.

Итак, чтобы получить быстрые и правильные ответы для реализации LVL, я загружаю тестовый apk (с тостами за ответы LVL) в консоль Google Play в бета-тестовом канале. Затем я загружаю APK из Google Play благодаря URL-адресу бета-теста Google Play. Ответы LVL намного быстрее и надежнее.

Скажите, пожалуйста, подтвердите ли вы это наблюдение?

0 голосов
/ 21 августа 2011

Реализуйте 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()
        }
    });
}
...