2014-10-27 2 views
0

Итак, это мой внутренний класс реализации базового адаптера. Обратите внимание, что для расширяемой списке, но я использую тот же процесс конкретизации для всего моего списка просмотровПроисходит ли утечка моего базового адаптера?

class GamesAdapter extends BaseExpandableListAdapter 
    { 

     private Context context; 


     public GamesAdapter(Context context) 
     { 
      this.context = context; 

     } 
    } 

Мой вопрос, как я могу избавиться от этого контекста, потому что после некоторого чтения, держащего контекст является ссылкой поэтому, когда я поворачиваю старый экземпляр, может не быть GC'ed, таким образом, утечка памяти. Пожалуйста, помогите мне

+0

сделать внутренний класс статическим – santalu

ответ

0

При изменении ориентации экрана система (по умолчанию) уничтожит текущую активность и создаст новую, предоставив вам возможность сохранить свое состояние. Не могли бы вы снова задать контекст? im not sure, если ваша обработка конфигурации изменится самостоятельно.

Мне лично, я просто передал getApplicationContext() в любое время, когда мне нужен контекст, поскольку он не зависит от жизненного цикла активности (его не контекст активности). Но вы также можете получить контекст из представления в вашем getChildView() и т. Д.

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

0

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