我有一个ListActivity,其中包含我定义的一个名为MessageItem的对象。我想将这个MessageItem中的数据传递给Service来做一些事情,但是我不希望Activity被绑定到Service的数据,这样Android就无法在需要时回收Activity(ergo内存泄漏) )。
我正在做的是将MessageItem对象与应用程序Context一起传递给单例类中的方法。单例方法使用应用程序Context来启动我的服务。我向本服务转达了意图。在这个Intent中,我像MessageItem对象一样放置项目:
intent.putExtra("subject", msg.getSubject());
intent.putExtra("summary", msg.getSummary());
intent.putExtra("created_on", msg.getCreatedDate());
intent.putExtra("read", msg.getIsRead());
此数据是否会将我的Activity绑定到Intent传入的服务并导致内存泄漏?
这会是一个更好的实施吗?:
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()));
答案 0 :(得分:4)
您不需要新的String或Integer。当数据按意图传输时, 它将被包裹和分割。
答案 1 :(得分:2)
此数据是否会将我的活动绑定到服务
不,上面的代码会将活动中的引用转换为intent。字符串和布尔值没有指向实例的指针。
这会是一个更好的实施吗?
没有!那会更糟糕。很多数据都会被复制,很多对象都会被创造出来。