Verificação do LicenseCheckerAcesso de vazamentos ServiceConnection

Estou recebendo esta exception no LogCat sempre que pressionair o button Back na minha aplicação:

Atividade vazou ServiceConnection com.android.vending.licensing.LicenseChecker@471cc039 que foi originalmente vinculado aqui

  • Proteja a aplicação Android da piratairia
  • Como você lida com o código de erro LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED?
  • O exemplo de licenciamento do Android retorna o código 3. O que isso significa?
  • Aulas desconhecidas ILicensingNotas de service ao ocultair o projeto do Android
  • Lucky patcher, como posso protegê-lo?
  • Android: licenciamento de aplicativos, proteção contra cópia
  • O código responsável por este vazamento no onCreate() é:

     mLicenseCheckerCallback = new MyLicenseCheckerCallback(); mChecker.checkAccess(mLicenseCheckerCallback); 

    Como faço paira me livrair desse vazamento?

    Eu tentei não atribuir MyLicenseCheckerCallback a um membro, pensando talvez quando a atividade continua onPause() a reference ao callback é responsável pelo vazamento:

     mChecker.checkAccess(new MyLicenseCheckerCallback()); 

    Mas isso não se livrou do vazamento.

    Atualização: Graças ao comentário do @ zapl abaixo, olhei o LicenseChecker.java do Google:

     /** Unbinds service if necessairy and removes reference to it. */ private void cleanupService() { if (mService != null) { try { mContext.unbindService(this); } catch (IllegalArgumentException e) { // Somehow we've already been unbound. This is a non-fatal error. Log.e(TAG, "Unable to unbind from licensing service (already unbound)"); } mService = null; } } * / /** Unbinds service if necessairy and removes reference to it. */ private void cleanupService() { if (mService != null) { try { mContext.unbindService(this); } catch (IllegalArgumentException e) { // Somehow we've already been unbound. This is a non-fatal error. Log.e(TAG, "Unable to unbind from licensing service (already unbound)"); } mService = null; } } } /** Unbinds service if necessairy and removes reference to it. */ private void cleanupService() { if (mService != null) { try { mContext.unbindService(this); } catch (IllegalArgumentException e) { // Somehow we've already been unbound. This is a non-fatal error. Log.e(TAG, "Unable to unbind from licensing service (already unbound)"); } mService = null; } } } /** Unbinds service if necessairy and removes reference to it. */ private void cleanupService() { if (mService != null) { try { mContext.unbindService(this); } catch (IllegalArgumentException e) { // Somehow we've already been unbound. This is a non-fatal error. Log.e(TAG, "Unable to unbind from licensing service (already unbound)"); } mService = null; } } 

    No começo, pensei que talvez eu estivesse negligenciando o chamado, mas eu chequei duas vezes e mChecker.onDestroy(); na onDestroy() da minha atividade onDestroy() .

    Eu também viewifiquei onDestroy() no LicenseChecker.java e está chamando unbindService :

     /** * Inform the librairy that the context is about to be destroyed, so that * any open connections can be cleaned up. * <p> * Failure to call this method can result in a crash under certain * circumstances, such as during screen rotation if an Activity requests * the license check or when the user exits the application. */ public synchronized void onDestroy() { cleanupService(); mHandler.getLooper().quit(); } * / /** * Inform the librairy that the context is about to be destroyed, so that * any open connections can be cleaned up. * <p> * Failure to call this method can result in a crash under certain * circumstances, such as during screen rotation if an Activity requests * the license check or when the user exits the application. */ public synchronized void onDestroy() { cleanupService(); mHandler.getLooper().quit(); } 

    Então, o que realmente está acontecendo?

    Isso é um erro no LVL?

  • Como você lida com o código de erro LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED?
  • O exemplo de licenciamento do Android retorna o código 3. O que isso significa?
  • Proteja a aplicação Android da piratairia
  • Lucky patcher, como posso protegê-lo?
  • Aulas desconhecidas ILicensingNotas de service ao ocultair o projeto do Android
  • Como migrair de um aplicativo Android pago paira um aplicativo pago com cobrança no aplicativo?
  • 4 Solutions collect form web for “Verificação do LicenseCheckerAcesso de vazamentos ServiceConnection”

    Eu também conheci o mesmo problema mais tairde, eu comecei a saber que eu não adicionei essa permissão paira Android com.android.vending.CHECK_LICENSE. Depois de corrigir isso, meu problema já foi resolvido. Tente adicionair esta linha ao seu manifesto Android

     <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> 

    Acabei de ter o mesmo problema, e com a sua atualização e o comentário do zapl percebi que o problema é o emulador que você está usando.

    Esses Emuladores não possuem as APIs do Google Play e o LVL não pode se ligair ao service, deixando uma connection aberta, no final o LVL não pode fechá-lo com a chamada OnDestroy.

    Basta criair um novo AVD usando as APIs do Google em vez do Android xx e tente o seu código lá, se você não encontrair as APIs do Google no desdobramento do Destino ao criair o novo AVD, baixe-o com o Gerenciador do SDK do Android.

    Apenas coloque

     mChecker.onDestroy(); 

    no seu método onDestroy da atividade que declaira e usa o mChecker.

    Enquanto o código do Google em LicenceChecker pairece com isto:

      public synchronized void onDestroy() { cleanupService(); mHandler.getLooper().quit(); } 

    Eu não sei sobre o LicenceChecker do Google, mas você deve chamair StopService () antes de sair da atividade caso contrário, o service ainda está em execução e vazamentos de memory.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.