1

Я начал отслеживать утечки памяти в своем приложении для Android, и благодаря большой библиотеке LeakCanary я обнаружил, что некоторые из моих действий, которые включают GooglePlusButton, просачивают контекст.Google PlusOneButton утечки контекста

К сожалению, я не нашел обходного пути, чтобы избежать этого. Как описано в этом old bug report, метод инициализации скрывает тот факт, что для этого нужен контекст. Кроме того, для этого необходим контекст Activity; Андроид студия декомпилятор показывает это (ошибка репортер сказать ему, а):

public void initialize(String var1, int var2) { 
    zzab.zza(this.getContext() instanceof Activity, "To use this method, the PlusOneButton must be placed in an Activity. Use initialize(String, OnPlusOneClickListener)."); 

Есть ли обходной путь лучше, чем полностью избавиться от кнопки +1?

Примечание: Я использую Google Play Services 9.6.0, но эта проблема также возникла в предыдущих версиях.

ответ

0

Как сказано в сообщении об ошибке, если вы с помощью кнопки G + 1 не в деятельности (например, в меню приложения бар), необходимо инициализировать его с помощью вызова метода Initialize (String, OnPlusOneClickListener).

Обновляется кнопка +1 с URL-адресом. Большинство приложений вызывают этот метод каждый раз, когда кнопка находится в фокусе (например, в методе Activity onResume). Чтобы использовать этот метод, PlusOneButton должен быть помещен в Activity. Использовать initialize (String, OnPlusOneClickListener) в противном случае.

Больше информации здесь: https://developers.google.com/android/reference/com/google/android/gms/plus/PlusOneButton

+0

Спасибо за ваш комментарий, но в моей проблеме используется кнопка G + 1 в действии; что приводит к утечке контекста. –

0

Предыдущий ответ указывает меня в новом направлении. Я, наконец, управляю им, динамически создавая кнопку G + 1 и предоставляя конструктору контекст приложения:

mPlusOneButton = new PlusOneButton(getApplicationContext()); 
parent.addView(mPlusOneButton); 
... 
mPlusOneButton.initialize(..., new PlusOneButton.OnPlusOneClickListener() { 
     @Override 
     public void onPlusOneClick(Intent intent) {...} 
     }); 

 Смежные вопросы

  • Нет связанных вопросов^_^