2010-09-01 156 views
1

我有一个ListActivity包含我定义的一个对象,称为MessageItem。我想将这个MessageItem中的数据传递给一个服务来做一些事情,但我不希望这个Activity被数据绑定到这个服务上,这样如果需要的话,Android不能回收这个Activity(ergo内存泄漏)。这是内存泄漏吗?

我正在做的是将MessageItem对象与应用程序上下文一起传递给单例类中的方法。单例方法使用应用程序上下文来启动我的服务。我传递给本服务意向。在这个意图,我把物品从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())); 

回答

4

你不需要新的字符串或整数。当数据被意图传输时,它将被打包并且不被打包。

+0

嗯,是的,好不好 – Andrew 2010-09-01 15:12:30

+0

是不是把它叫做盒装? – Powerlord 2010-09-01 15:20:16

2

将这个数据我的活动绑定服务

没有,上面的代码将在活动的意图引用。字符串和布尔值没有指向实例的指针。

这是更好的实施吗?

不!那会更糟。许多数据将被复制,并且很多对象将被创建为零。

+0

感谢您的澄清 – Andrew 2010-09-01 15:11:38