Извините, я не могу помочь вам с проблемой Spinner, но я могу попробовать вторую часть:
Сообщение от Romain Guy на блоге разработчика Android объясняет две важные вещи.
Во-первых:
Когда вы создаете представление (TextView, ImageView ...), вы не должны создавать его в контексте действия
// DO NOT DO THIS
TextView label = new TextView(this);
В противном случае представление получает ссылку на вашу деятельность и никогда не будет освобождено.
Вместо этого, когда вы создаете представление программно, вы должны использовать контекст приложения:
TextView label = new TextView(getApplicationContext());
Во-вторых:
Когда вы связываете Drawable с View, он сохраняет обратный вызов вашей активности через Context. Если вы оставите его, он потеряет память, когда ваша деятельность будет уничтожена.
Чтобы избежать этого, нужно «установить нулевые обратные вызовы хранимых элементов рисования при уничтожении действия», например, с помощью ImageView:
protected void onDestroy() {
imageView.getDrawable().setCallback(null);
super.onDestroy();
}
Вы должны сделать то же самое для фона, который можно нарисовать ...
Надеюсь, это поможет.