繁体   English   中英

这是内存泄漏吗?

[英]Is this a memory leak?

我有一个ListActivity,其中包含一个已定义的对象,称为MessageItem。 我想将此MessageItem中的数据传递给Service来做一些事情,但我不希望Activity绑定到Service上的数据,这样Android就无法在需要的情况下收回Activity(错误内存泄漏) )。

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

您不需要新的String或Integer。 通过意图传输数据时,将对数据进行打包和取消打包。

该数据会将我的活动绑定到服务吗

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

这样会更好吗?

没有! 那会更糟。 很多数据将被复制,很多对象将被创建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM