Это утечка памяти? - PullRequest
       32

Это утечка памяти?

1 голос
/ 01 сентября 2010

У меня есть ListActivity, содержащий определенный мной объект, называемый MessageItem. Я хочу передать данные из этого MessageItem в Сервис для выполнения каких-то задач, но я не хочу, чтобы Activity была привязана к данным Сервиса, чтобы Android не мог вернуть Activity, если это необходимо ).

Я передаю объект MessageItem методу в одноэлементном классе вместе с контекстом приложения. Метод singleton использует приложение Context для запуска моей службы. Я передаю этой Службе Намерение. В этом намерении я помещаю элементы из объекта MessageItem следующим образом:

    intent.putExtra("subject", msg.getSubject());
    intent.putExtra("summary", msg.getSummary());
    intent.putExtra("created_on", msg.getCreatedDate());
    intent.putExtra("read", msg.getIsRead());

Связывают ли эти данные мою активность со службой, в которую передается Намерение, и вызывают утечку памяти?

Это будет лучшая реализация?:

    intent.putExtra("subject", new String(msg.getSubject()));
    intent.putExtra("summary", new String(msg.getSummary()));
    intent.putExtra("created_on", new Integer(msg.getCreatedDate()));
    intent.putExtra("read", new Boolean(msg.getIsRead()));

Ответы [ 2 ]

4 голосов
/ 01 сентября 2010

Вам не нужна новая строка или целое число. Когда данные передаются по намерению, Это будет разделено и не разделено.

2 голосов
/ 01 сентября 2010

Будут ли эти данные привязывать мою активность к Сервису

Нет, код выше будет ссылками в действии на намерение. Строковые и логические значения не имеют указателя на экземпляр.

Это будет лучшая реализация?

Нет! Это было бы намного хуже. Большая часть данных будет скопирована, и множество объектов будет создано для нуля.

...